Android: как анимировать высоту в wrap_content? - PullRequest
0 голосов
/ 19 января 2020

Мне нужно использовать ValueAnimator, чтобы пользовательское «выпадающее поле» появлялось, когда пользователь перетаскивал определенное представление. (Я хочу изменить поле с gone, height = 0 на visible, height = wrap_content).

Я пытался решить этот вопрос: Как анимировать в wrap_content?

Ответ там работал, когда я использовал его в одном TextView, но когда я попытался применить его к LinearLayout с несколькими текстовыми представлениями, он анимировался до слишком большого значения высоты, а затем, когда анимация закончилась, вернулась к правильному , Макет:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:visibility="gone"
android:orientation="horizontal">
    <TextView
    android:layout_width="0dp"
    android:layout_weight="5"
    android:layout_height="match_parent"
    android:paddingVertical="8dp"
    android:gravity="center"
    android:textSize="18sp"/>
    <TextView
    android:layout_width="0dp"
    android:layout_weight="2"
    android:layout_height="match_parent"
    android:paddingVertical="8dp"
    android:gravity="center"
    android:textSize="18sp"/>
</LinearLayout>

Использование animateLayoutChanges у меня тоже не сработало, и я все равно хочу использовать собственный аниматор.

Я использую C# в Xamarin, но отвечаю с Android Studio Java код тоже приемлем, я переведу его на C#.

1 Ответ

2 голосов
/ 20 января 2020

Это должно быть вызвано измерением дочерних представлений во время измерения, поэтому вы можете изменить свой xaml следующим образом, изменить ширину дочерних представлений на wrap_content:

<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="0dp"
  android:visibility="gone"
  android:orientation="horizontal">
    <TextView
      android:layout_width="wrap_content"
      android:layout_weight="5"
      android:layout_height="match_parent"
      android:paddingVertical="8dp"
      android:gravity="center"
      android:textSize="18sp"/>
    <TextView
      android:layout_width="wrap_content"
      android:layout_weight="2"
      android:layout_height="match_parent"
      android:paddingVertical="8dp"
      android:gravity="center"
      android:textSize="18sp"/>
</LinearLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...