Чи є спосіб додати висоту до Viewпристроїв перед льодяником, не загортаючи їх у CardView?
CardView. Я хотів би додати його до будь-якого, Viewякщо це можливо.
Чи є спосіб додати висоту до Viewпристроїв перед льодяником, не загортаючи їх у CardView?
CardView. Я хотів би додати його до будь-якого, Viewякщо це можливо.
Відповіді:
ViewCompat.setElevation(View, int) в даний час не створює прокладок.
Єдиний спосіб імітувати висоту прямо зараз - застосувати тінь pre-v21. Визначте свій стиль / макет / малювання valuesта перевизначте його values-v21. Для кнопок я використовую перевизначення стилю. Що стосується макетів, я, як правило, звертаюся до перевизначення посилань (використовуйте, @nullщоб позбутися малюнка).
Сподіваємось, в майбутньому оновлення бібліотеки підтримки додасть прокладки.
Цей потік reddit відстежує згадане оновлення.
Нова бібліотека дизайну підтримки фактично створює прокладки для плаваючої кнопки дії.
Ось приклад того, як додати тінь нижче 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>
Я досягаю того ж ефекту, використовуючи,
android:background="@android:drawable/dialog_holo_light_frame"
Мій тестований результат:

посилання - https://stackoverflow.com/a/25683148/3879847
Оновлення: Якщо ви хочете змінити колір цього малюваного малюнка, спробуйте відповідь @Irfan
Тепер ви можете використовувати схему 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">