Android AppCompat 21 Elevation

Есть ли способ добавить возвышение к View в pre-lollipop устройствах без их упаковки в CardView?

Ответ 1

ViewCompat.setElevation(View, int) в настоящее время не создает прокладки.

Единственный способ имитировать высоту прямо сейчас - применить тень pre-v21. Определите свой стиль/макет/рисунок в values и переопределите его в values-v21. Для кнопок я использую переопределения стиля. Для макетов я обычно перехожу к переопределению ссылок (используйте @null, чтобы избавиться от drawable).

Надеемся, что в будущем обновление библиотеки поддержки добавит прокладки.

Этот reddit thread отслеживает указанное обновление.

Изменить

Новая поддержка дизайн-библиотеки фактически создает прокладки для кнопки плавающего действия.

Ответ 2

Это пример того, как добавить тень ниже Toolbar на устройствах с предварительным леоптипом:

enter image description here

Макет должен быть таким:

<RelativeLayout
    android:id="@+id/toolbar_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true" >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:animateLayoutChanges="true"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />

    <View
        android:id="@+id/toolbar_shadow"
        android:layout_width="match_parent"
        android:layout_height="@dimen/toolbar_shadow"
        android:layout_below="@id/toolbar"
        android:background="@drawable/toolbar_dropshadow" />
</RelativeLayout>

И тень:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <gradient
        android:angle="90"
        android:endColor="#88444444"
        android:startColor="@android:color/transparent" />

</shape>

Ответ 3

Я получаю тот же эффект, используя

  android:background="@android:drawable/dialog_holo_light_frame"

Мой тестовый результат:

enter image description here

ссылка - fooobar.com/questions/45818/...

Обновление: Если вы хотите изменить цвет этого шаблона, попробуйте ответить @Irfan

fooobar.com/questions/45822/...

Ответ 4

Теперь вы можете использовать схему xmlns:app="http://schemas.android.com/apk/res-auto" и app:elevation

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools">
...

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            app:elevation="5dp">