Подтвердить что ты не робот

Как принести ImageView перед кнопкой в ​​android 5?

В версиях Android, предшествующих lolipop, работает следующий код, и перед кнопкой отображается изображение. Но в android 5 изображение просматривается за кнопкой.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
    android:id="@+id/button"
    android:layout_width="210sp"
    android:layout_height="210sp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@drawable/round_button"
    android:drawablePadding="10dip"
    android:gravity="center_vertical|center_horizontal" />


<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:contentDescription="@string/torch"
    android:src="?attr/imageview" />

 </RelativeLayout>
4b9b3361

Ответ 1

Появилась проблема с Android 5.0 elevation. По-видимому, порядок RelativeLayout Z-оси привязан к elevation. Если оба виджета имеют одинаковый elevation, RelativeLayout будет определять порядок оси Z - вы можете видеть, что, если вы хотите, например, переключить макет как на виджетов Button. Однако, если один виджет (Button) имеет elevation, а другой виджет (ImageView) не имеет приоритета elevation.

Вы можете удалить Button elevation через android:stateListAnimator="@null" или определяя собственный пользовательский аниматор. Или вы можете добавить elevation в свой ImageView, чтобы он был выше по оси Z, чем Button.

Ответ 2

Значения высоты и трансляции кнопок определяются в рамках, как показано ниже:

<!-- Elevation when button is pressed -->
<dimen name="button_elevation_material">1dp</dimen>
<!-- Z translation to apply when button is pressed -->
<dimen name="button_pressed_z_material">2dp</dimen>

Источник

Как поясняет CommonsWare, установите для параметра translationZ изображения Image выше, чем значение Button, даст результат, как ожидалось.