Я пытаюсь оживить TextView
, скользящего вниз из-за ImageView
. У меня есть следующий макет:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:layout_margin="16dp"
android:layout_marginTop="-10dp"
android:background="@drawable/image_background"
android:visibility="invisible"
android:layout_below="@id/image"
/>
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/image_background"
android:adjustViewBounds="true"
android:layout_margin="6dp"
android:layout_below="@id/question"
/>
</RelativeLayout>
Я использую RelativeLayout
вместо LinearLayout
, чтобы description TextView
отображался за ImageView
(по z-index).
Обратите внимание, что TextView
может различаться по длине текста, и при заполнении он часто длиннее изображения. Есть и другие виды выше и ниже этого RelativeLayout
.
Я пробовал с этой анимацией
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="-100%p" android:toYDelta="0"
android:duration="@android:integer/config_longAnimTime"/>
<scale android:fromYScale="0.0" android:toYScale="1.0"
android:duration="@android:integer/config_longAnimTime" />
</set>
... и с использованием
descriptionView.Visibility = ViewStates.Visible;
Animation a = AnimationUtils.LoadAnimation(this, Resource.Animation.push_down);
descriptionView.StartAnimation(a);
Однако, это нестабильно, и не начинается там, где я думал, что это начнется, nore не работает с масштабированием. Я читал об анимациях макета и о том, что анимация может запускаться автоматически при изменении видимости, но я не знаю, как.
Как заставить работать анимацию, и есть ли более простое решение?