Два вида с одинаковой высотой бок о бок
У меня есть два вида с одинаковым возвышением рядом друг с другом. Мое желаемое поведение заключается в том, что они не будут отбрасывать тень друг на друга, поскольку они имеют одинаковую высоту, однако, происходит то, что вид слева отбрасывает тень справа. Они не имеют одинаковый размер, поэтому я не могу поместить их оба в другой вид и применить к этому виду высоту.
Это ожидаемое поведение? Есть ли способ обойти это?
Редактировать:
Я просто воссоздал с более простыми представлениями, вот код. Я также заметил, что он имеет ожидаемое поведение, если у меня есть представление непосредственно в макете, и я не включаю его, как я сделал это в этом примере, и когда мне нужно, чтобы оно работало.
<LinearLayout
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="horizontal"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:background="@android:color/holo_green_dark">
<LinearLayout
android:layout_width="200dp"
android:layout_height="200dp"
android:background="@android:color/holo_red_dark"
android:elevation="24dp"/>
<include layout="@layout/test"/>
</LinearLayout>
А вот и включить:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@android:color/holo_red_dark"
android:elevation="24dp"/>
</LinearLayout>
И скриншот:
1 ответ
Смотрите иерархию у вас есть:
Итак, вы применили повышение к 1
а также 3
, которые не являются братьями и сестрами. По-видимому, если одно представление выше в иерархии, чем оно должно отбрасывать тень, независимо от того, имеют ли эти представления одинаковую высоту или нет.
Если бы вы применили высоту к 2
вместо 3
Вы бы не увидели эффект тени.
Так что если вы просто измените свой test.xml
к этому:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:elevation="24dp">
<LinearLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@android:color/holo_red_dark"/>
</LinearLayout>
Вы получите этот вывод: