- Android Visibility от GONE to VISIBLE не работает с первого раза
- 4 ответа
- Android: почему setVisibility (View.GONE); Или setVisibility (View.INVISIBLE); не работает
- SetVisibility (GONE) становится невидимым, но все еще занимает пространство
- Android: почему setVisibility(просмотр.GONE); или setVisibility (View.Невидимый); не работает
- 7 ответов
- Android — ProgressBar setVisibility — GONE не работает
- 5 ответов
- Похожие вопросы:
Android Visibility от GONE to VISIBLE не работает с первого раза
Здравствуйте, у меня проблема с анимацией, которую я пытаюсь сделать.
Я использую эту библиотеку AndroidViewAnimations.
Вот мой XML-код макета:
И вот мой java-код:
Теперь проблема в том, что при первом нажатии кнопки анимация не работает, но после этого работает каждый раз.
Я провел небольшое исследование и обнаружил, что проблема в том, что у меня отключена видимость, и если я сделаю ее невидимой, она будет работать нормально с первого раза. Дело в том, что я не хочу, чтобы видимость была невидимой, а чтобы она исчезла, потому что я не хочу, чтобы линейный макет занимал пространство, когда он скрыт.
4 ответа
Я только что решил пару минут назад с помощью ViewTreeObserver. В приведенном ниже примере переменная currentMode — это представление, которое я хочу анимировать внутри и снаружи. Его значение по умолчанию — «ушел», и у меня возникла ТОЧНАЯ проблема, которая возникла у вас.
Вот как я это решил:
Используя ViewTreeObserver, мы можем наблюдать за глобальными изменениями пользовательского интерфейса, а затем реагировать. Метод View.isShown() проверяет, виден ли он. Если да, то я запускаю анимацию. Это отлично работает для меня.
Затем для анимации выхода вы должны прикрепить слушателя к анимации выхода следующим образом:
Если вы используете YoYo Library, попробуйте это.
Вы также можете использовать это для непрерывной анимации на любом объекте просмотра.
У меня была аналогичная проблема, и даже с принятым ответом я не мог заставить ее работать. Так я сделал это
Источник
Android: почему setVisibility (View.GONE); Или setVisibility (View.INVISIBLE); не работает
Я хочу, чтобы мой DatePicker и кнопка были невидимыми в начале. И когда я нажимаю свою волшебную кнопку, я хочу установитьVisibility (View.Visible);
Проблема здесь в том, что когда setVisibility(View.GONE) или setVisibility(View.INVISIBLE) ничего не меняется, и компонент все еще отображается.
Я вижу немало вещей не так. Во-первых, у вас нет определенной волшебной кнопки, и для нее нет обработчика событий.
Также вы не должны использовать:
Используйте только один из двух. Из документации для Android :
View.GONE Это представление невидимо, и для макета не требуется свободного места.
View.INVISIBLE Этот вид невидим, но он по-прежнему занимает пространство для макета.
В вашем примере вы переопределяете назначение View.GONE с помощью View.INVISIBLE .
Аналогично для других виджетов:
Вы можете рассматривать это как видимость и отображение стиля CSS.
Сначала просмотрите свой код:
Здесь вы устанавливаете видимость в одно и то же поле, поэтому проблема. Я даю один образец для этой демонстрации примера
View.GONE Это представление невидимо, и для макета не требуется свободного места.
View.INVISIBLE Этот вид невидим, но он по-прежнему занимает пространство для макета.
Сегодня у меня был сценарий, где я выполнял следующие действия:
Прямо на следующем кадре я выполнял проверку в другом месте для видимости этого представления. И угадай что? Проходило следующее условие:
Помещая точки останова, вы видите, что видимость меняется на GONE , но прямо на следующем кадре она волшебным образом становится VISIBLE . Я пытался понять, как, черт возьми, это может случиться.
Оказывается, на это представление была применена анимация, которая внутренне вызывала представление, чтобы изменить его видимость до VISIBLE до завершения анимации:
Если вы отлаживаете, вы увидите, что myViewGroup действительно меняет видимость на GONE , но прямо на следующем кадре он снова станет видимым для запуска анимации.
Итак, если вы сталкиваетесь с такой ситуацией, убедитесь, что вы не выполняете проверку в режиме оживления представления.
Вы можете удалить все анимации в представлении через View.clearAnimation () .
Потому что вы устанавливаете видимость как true, так и false. Попробуйте setVisible(0) для видимого true. and setVisible(4) до видимого false.
Источник
SetVisibility (GONE) становится невидимым, но все еще занимает пространство
У меня есть представление, которое фактически является кнопкой. Вот его XML-макет (add_new.xml)
Когда я установил его видимость GONE, как это
Он исчезает, но все еще занимает пространство. Как это:
Эта кнопка является заголовком в ListView , который определяется этим xml:
И я не хочу, чтобы он занимал дополнительный элемент списка, когда его видимость установлена на GONE. Как указано в документации.
GONE – это невидимое представление, и это не занимает места для макета.
Любые идеи о том, как заставить его НЕ занимать пространство?
Спасибо, Dennis xx
PS Мое listview находится внутри FoldersFragment ListFragment и вот xml моей MainActivity, где представлен FoldersFragment
На мой взгляд, это ошибка Android, мы просто исправим эту проблему:
Просто скройте LinearLayout с идентификатором LAYOUT_TO_HIDE с помощью Visible.GONE а затем root FrameLayout свернет его высоту, давая вам «скрытый» заголовок без пробела.
Если это необходимо, есть отличный способ справиться с этим:
То, что вы можете сделать, это установить оператор if, всякий раз, когда условие установить видимость на «GONE», установите представление в виде содержимого обертывания, и ваше пространство будет бесплатным, я сделал это и работал для поиска
Это мое решение. Создайте новый файл макета с именем «special.xml», скопируйте код в файл.
Используйте условие, чтобы раздуть пустой макет внутри newview. Не использовать view.setVisibility (View.GONE); ,
Используйте mHeaderView.setVisiable (), чтобы управлять видимым, а не внешним .ViewVisiable (). меня устраивает.
Все ответы в этой теме предлагают новый вид оболочки, который стоит дорого. Правильный способ скрыть вид полностью – установить поля на 0 при настройке видимости на GONE . В этом примере кода cardView – это вид, который я пытаюсь скрыть. Прямым родителем cardView является RecyclerView, поэтому мы используем RecyclerView.LayoutParams – не забудьте заменить правильные параметры макета.
Установите layout_width и layout_height в 0 где вы хотите скрыть элемент, сделав это
Я не думаю, что это ошибка. Просто используйте GONE, чтобы исчезнуть пустое пространство. CSS делает то же самое. Попробуйте display: block против visibility: hidden .
Источник
Android: почему setVisibility(просмотр.GONE); или setVisibility (View.Невидимый); не работает
Я хочу, чтобы мои DatePicker и кнопку чтобы быть невидимым в начале. И когда я нажимаю свою волшебную кнопку, Я хочу setVisibility(View.Видимый);
проблема здесь в том, когда я setVisibility(View.GONE) или setVisibility(View.INVISIBLE) ничего не меняется и компонент остается видимым.
7 ответов
Я вижу довольно много вещей неправильно. Для начала, у вас нет определенной волшебной кнопки, и для нее нет обработчика событий.
также вы не должны использовать:
использовать только один из двух. От документация для Android:
вид.Исчез этот вид невидим, и он не занимает никакого места для цели компоновки.
вид.Невидимый этот взгляд невидим, но он все еще занимает место для макета цели.
в вашем примере вы переопределяете View.GONE назначение View.INVISIBLE один.
аналогично для других виджетов:
вы можете думать, что это видимость и отображение стиля CSS.
сначала посмотрите свой код:
здесь вы устанавливаете обе видимости в одно и то же поле, так что это проблема. Я даю один образец для этого демо
вид.Ушел этот вид невидим, и он не занимает никакого места для целей макета.
вид.Невидимый этот вид невидим, но он по-прежнему занимает место для целей макета.
сегодня у меня был сценарий, где я выполнял следующие действия:
прямо на следующем кадре я выполнял if проверьте где-нибудь еще состояние видимости этого представления. И знаешь что? Проходило следующее условие:
размещение точек останова вы видите, что видимость меняется на GONE , но прямо на следующем кадре он волшебным образом становится VISIBLE . Я пытался понять, как это могло случиться.
оказывается, к этому представлению была применена анимация, которая внутренне заставила представление изменить его видимость на VISIBLE до окончания анимации:
если вы отлаживаете, вы увидите, что myViewGroup действительно меняет видимость на GONE , но прямо на следующем кадре он снова станет видимым, чтобы запустить анимацию.
Итак, если вы столкнетесь с такой ситуацией, убедитесь, что вы не выполняете if Регистрация в разгар оживления вида.
вы можете удалить все анимации на вид через вид.clearAnimation().
вид.GONE делает вид невидимым без представления, занимающего место в макете. Вид.Невидимый делает вид просто невидимым, все еще занимая пространство.
вы сначала используете GONE, а затем невидимый на том же представлении.Поскольку код выполняется последовательно, сначала представление исчезает, затем оно переопределяется невидимым типом, все еще занимающим пространство.
вы должны добавить прослушиватель кнопок на кнопке и внутри метода onClick () сделать видимыми представления. Это должно быть логикой согласно мне в вашем методе onCreate ().
Я думаю, что это должно легко работать. Надеюсь, это поможет.
потому что вы устанавливаете видимость true или false. попробовать это setVisible(0) для видимого true . and setVisible(4) для видимого false.
Источник
Android — ProgressBar setVisibility — GONE не работает
Я добавляю ProgressBar к фрагментам в своем приложении. Я настроил его на два основных фрагмента (используемых в качестве вкладок) следующим образом:
ProgressBar в activity_main.xml :
Установка ProgressBar VISIBLE и GONE :
Это работает без каких-либо проблем. Я попытался добавить еще один ProgressBar к другому фрагменту, который имеет WebView :
ProgressBar в fragment_article.xml :
Установка видимости так же, как и в предыдущем коде, но по какой-то причине это не установка ProgressBar на GONE . Не знаю, в чем дело.
Я пробовал использовать clearAnimation , как предлагалось здесь Android, setVisbility, чтобы не работать в RelativeLayout, но все равно ничего.
5 ответов
У меня есть проверка состояния, чтобы решить, должен ли ProgressBar появиться или нет. Макет выглядит следующим образом, где ProgressBar содержится в RelativeLayout :
Проверьте этот код:
Если вы используете фрагменты, это должно быть так:
Если вы используете activity, то:
У меня была такая же проблема (progressBar.setVisibility() не работал).
Как сказал аргумент @Illegal,
должно работать, если этот код работает на uiThread(mainThread).
Моя проблема заключалась в том, что я пытался запустить код не на uiThread. Поэтому я решил эту проблему, изменив код с
Вероятно, это связано с тем , что View.GONE предотвратит рисование View на экране, в то время как другой компонент View android:layout_align[POSITION] может быть определен для этого View , поэтому их положение не может быть вычислено.
View.INVISIBLE будет работать, потому что он просто сделает его невидимым, но View все еще там, и другие View могут вычислить свое положение, если для него установлено выравнивание
Какова лучшая практика удаления фрагментов (когда анимация не требуется) с помощью fragmentTransaction.remove или изменение видимости вида контейнера фрагментов на GONE-setVisibility(GONE);
Может ли кто-нибудь помочь мне понять, почему progressBar.setVisibility() работает при использовании CountDownTimer , но не при загрузке async ? На самом деле, первая загрузка Toast на async даже не показывает, хотя вторая загрузка onPostExecute() делает это. Ниже приведена рабочая, а точнее NOT.
Эта работа для меня:
Похожие вопросы:
У меня есть ListView, который содержит progressBars, я хочу показать и скрыть progressBar внутри потока, вот мой код : public void onClick(View v) < if (v.getId() == R.id.ib_add_file) < Intent.
Я добавил индикатор выполнения на webview. Моя проблема заключается в том, что когда webview загружает url и индикатор выполнения показывает прогресс, и я нажимаю кнопку Назад, индикатор выполнения.
Recyclerview CardView удалите интервал по умолчанию, если значение setVisibility равно GONE для конкретного элемента Изображение Одно, когда элемент setVisibility равен INVISIBLE Два изображения.
У меня есть проверка состояния, чтобы решить, должен ли ProgressBar появиться или нет. Макет выглядит следующим образом, где ProgressBar содержится в RelativeLayout :
Источник