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

Бросить тень поверх LinearLayout с помощью Android: высота

У меня есть этот LinearLayout, который будет помещен в нижней части макета активности. Я хочу, чтобы этот LinearLayout имел высоту 4dp, как и верхняя панель инструментов, однако, поскольку android:elevation помещает тень под компонент ui, и этот конкретный компонент (linearLayout) будет находиться в нижней части экрана, Я не увижу никакого повышения вообще.

Это мой код LinearLayout, и изображение его с реализацией по умолчанию:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="3"
    android:background="@android:color/transparent"
    android:orientation="horizontal"
    android:elevation="4dp"
    android:layout_alignParentBottom="true">

    <ImageButton
        android:id="@+id/playButton"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:scaleType="center"
        android:clickable="true"
        android:background="@drawable/bottom_toolbar_menu_selector"
        android:src="@drawable/ic_play"
        style="?android:attr/borderlessButtonStyle" />

    <ImageButton
        android:id="@+id/stopButton"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:scaleType="center"
        android:clickable="true"
        android:background="@drawable/bottom_toolbar_menu_selector"
        android:src="@drawable/ic_stop"
        style="?android:attr/borderlessButtonStyle" />

    <ImageButton
        android:id="@+id/bookmarkButton"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:scaleType="center"
        android:clickable="true"
        android:background="@drawable/bottom_toolbar_menu_selector"
        android:src="@drawable/ic_bookmark"
        style="?android:attr/borderlessButtonStyle" />

</LinearLayout>

введите описание изображения здесь

Есть ли способ, используя elevation, чтобы поместить тень поверх компонента ui? Спасибо заранее!

4b9b3361

Ответ 1

Теоретически вы не можете делать это с помощью android:elevation в том смысле, что вы не можете выбрать направление, в котором будет тень.

Существует два решения.

1. Вводимый коэффициент

Вы могли бы, например, поставить ImageView прямо над вашим макетом и установить android:src="@drawable/shadow". Это должен быть вертикальный GradientDrawable, определенный в XML, как описано здесь.

2. Обход

В то время как большая часть тени фактически находится под представлением, тонкая тень также выше. Обходной путь может использовать очень высокое значение для elevation, например 40dp: нижняя часть будет скрыта из-за вашего макета, а верхняя часть будет расширяться и будет выглядеть как общая тень.

В любом случае у вас нет контроля над значением высоты в dp, в том смысле, что вы не можете быть уверены, что ваша тень эквивалентна той, что была сделана с помощью android:elevation=4dp.

Ответ 2

используйте как.:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="205dp"
    android:background="@color/white"
    android:orientation="horizontal">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_marginTop="-5dp"
        android:background="@color/white"
        android:elevation="3dp"
        android:paddingTop="5dp">

        // CHILD VIEWS
    </RelativeLayout>
</LinearLayout>

Ответ 3

Попробуйте это, я не могу установить фон через xml, тогда я попробовал программный способ решить эту проблему, и я отлично справляюсь с этим, если сталкиваюсь с проблемой тени show в Linear Layout

lprofile.setBackgroundResource(R.drawable.background_with_shadow);

lprofile - это мой рефлекс линейного макета, а background_with_shadow - это xml для применения тени. Я надеюсь, что я захочу для реквизита ur... thank u..