Есть ли способ добавить возвышение к View
в pre-lollipop устройствах без их упаковки в CardView
?
Android AppCompat 21 Elevation
Ответ 1
ViewCompat.setElevation(View, int)
в настоящее время не создает прокладки.
Единственный способ имитировать высоту прямо сейчас - применить тень pre-v21. Определите свой стиль/макет/рисунок в values
и переопределите его в values-v21
. Для кнопок я использую переопределения стиля. Для макетов я обычно перехожу к переопределению ссылок (используйте @null
, чтобы избавиться от drawable).
Надеемся, что в будущем обновление библиотеки поддержки добавит прокладки.
Этот reddit thread отслеживает указанное обновление.
Изменить
Новая поддержка дизайн-библиотеки фактически создает прокладки для кнопки плавающего действия.
Ответ 2
Это пример того, как добавить тень ниже Toolbar
на устройствах с предварительным леоптипом:
Макет должен быть таким:
<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"
Мой тестовый результат:
ссылка - fooobar.com/questions/45818/...
Обновление: Если вы хотите изменить цвет этого шаблона, попробуйте ответить @Irfan
Ответ 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">