Android: как скрыть и затем показать Представление с эффектом анимации?

У меня есть подобный вопрос как этот: расположение Обновления с анимацией

В основном: Я сделал, чтобы один вертикальный LinearLayout Просмотрел с edittext, кнопкой и затем перечислил. Я хотел бы скрыть exittext после нажимающей кнопки для создания большего количества пространства для списка (кнопка повысится). На втором нажатии edittext должен быть видим снова. Edittext и кнопка имеют "wrap_content" высоту.

Я хотел бы скрыть и показать edittext с анимацией.

Я успешно выполнился для анимации сокрытия путем перегрузки applyTransformation Анимации:

final float edittextheight= edittext.getHeight();
[....]
@Override
protected void applyTransformation(float interpolatedTime,
        Transformation t)
{
    super.applyTransformation(interpolatedTime, t);
    android.view.ViewGroup.LayoutParams lp = edittext.getLayoutParams();
    lp.height = (int)(edittextheight*(1.0-interpolatedTime));
    edittext.setLayoutParams(lp);
}

Проблема:

Я не знаю, как вычислить высоту для анимации показа - edittext.getHeight (); возвраты 0, когда виджет скрыт и в определении расположения, я использую "wrap_content".

Помощь?

6
задан Community 23 May 2017 в 12:10
поделиться

1 ответ

Не могли бы вы кэшировать Высота EditText? Другими словами, сохраните его высоту (используя getHeight ()) в int, когда вы его скрываете, что вы можете позже прочитать, даже когда сам виджет больше не отображается.

Однако я подозреваю, что вы также столкнулись с аналогичной проблемой, с которой я столкнулся, описанной в этом вопросе . По сути, вы не можете получить высоту View до тех пор, пока onCreate, onStart и onPause не завершат все , потому что до этого действие еще не закончило рисование на экране. Хороший способ узнать, что процесс макета завершен, прежде чем вы попытаетесь получить его высоту, - это просто получить высоту в вашей кнопке ClickListener; вы просто не можете нажать кнопку, пока макет не будет завершен, поэтому расчет высоты будет завершен.

1
ответ дан 17 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: