Высота не работает для BottomSheet внутри расположения координатора

Я пытаюсь использовать BottomSheet в своем макете. Корневой вид – это CoordinatorLayout и я хочу установить Elevation сверху для нижнего листа, поэтому я устанавливаю его с высоким значением (50dp), однако он не отображается, когда приложение запускается, но оно появляется в инструменте дизайна студии Android.

Я попытался установить фон для листа с сплошным цветом вместо градиента, но он все еще работал. Я также пытался использовать формы Shadow, но он не дает такого же внешнего вида.

Вот мой XML

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.atefhares.StartActivity" android:clipToPadding="false"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/DetailsView" android:layout_width="match_parent" android:layout_height="100dp" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Details Should be shown here" android:id="@+id/textView" android:textSize="25sp" android:padding="20dp" /> </LinearLayout> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.atefhares.Start_Activity" /> </LinearLayout> <android.support.v4.widget.SlidingPaneLayout android:id="@+id/bottom_sheet" android:layout_width="match_parent" android:layout_height="match_parent" app:behavior_peekHeight="70dp" app:layout_behavior="android.support.design.widget.BottomSheetBehavior" android:background="@drawable/gradiant" android:fillViewport="true" android:elevation="50dp"> <include layout="@layout/bottom_sheet_layout"/> </android.support.v4.widget.SlidingPaneLayout> </android.support.design.widget.CoordinatorLayout> 

Изменить: bottom_sheet_layout.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:orientation="vertical"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="70dp" android:background="@color/colorPrimary" android:padding="10dp" android:id="@+id/inviteLL"> <ImageView android:layout_width="40dp" android:layout_height="40dp" android:id="@+id/imageView" android:background="@drawable/invite_icon" android:layout_margin="5dp" android:layout_gravity="center_vertical" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Invite Friends" android:textSize="22sp" android:textColor="#ffffff" android:padding="10dp" android:fontFamily="sans-serif-condensed" android:gravity="center_vertical" android:id="@+id/inviteTV" android:layout_gravity="center_vertical" android:layout_weight="1" /> <ImageView android:layout_width="30dp" android:layout_height="30dp" android:id="@+id/arrowIV" android:layout_gravity="center_vertical" android:background="@drawable/arrow_up" /> </LinearLayout> <ListView android:layout_width="match_parent" android:layout_height="fill_parent" android:id="@+id/usersLV" android:dividerHeight="1dp" android:divider="#ffffff" android:background="#ffffff" /> </LinearLayout> , <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:orientation="vertical"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="70dp" android:background="@color/colorPrimary" android:padding="10dp" android:id="@+id/inviteLL"> <ImageView android:layout_width="40dp" android:layout_height="40dp" android:id="@+id/imageView" android:background="@drawable/invite_icon" android:layout_margin="5dp" android:layout_gravity="center_vertical" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Invite Friends" android:textSize="22sp" android:textColor="#ffffff" android:padding="10dp" android:fontFamily="sans-serif-condensed" android:gravity="center_vertical" android:id="@+id/inviteTV" android:layout_gravity="center_vertical" android:layout_weight="1" /> <ImageView android:layout_width="30dp" android:layout_height="30dp" android:id="@+id/arrowIV" android:layout_gravity="center_vertical" android:background="@drawable/arrow_up" /> </LinearLayout> <ListView android:layout_width="match_parent" android:layout_height="fill_parent" android:id="@+id/usersLV" android:dividerHeight="1dp" android:divider="#ffffff" android:background="#ffffff" /> </LinearLayout> 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:orientation="vertical"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="70dp" android:background="@color/colorPrimary" android:padding="10dp" android:id="@+id/inviteLL"> <ImageView android:layout_width="40dp" android:layout_height="40dp" android:id="@+id/imageView" android:background="@drawable/invite_icon" android:layout_margin="5dp" android:layout_gravity="center_vertical" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Invite Friends" android:textSize="22sp" android:textColor="#ffffff" android:padding="10dp" android:fontFamily="sans-serif-condensed" android:gravity="center_vertical" android:id="@+id/inviteTV" android:layout_gravity="center_vertical" android:layout_weight="1" /> <ImageView android:layout_width="30dp" android:layout_height="30dp" android:id="@+id/arrowIV" android:layout_gravity="center_vertical" android:background="@drawable/arrow_up" /> </LinearLayout> <ListView android:layout_width="match_parent" android:layout_height="fill_parent" android:id="@+id/usersLV" android:dividerHeight="1dp" android:divider="#ffffff" android:background="#ffffff" /> </LinearLayout> 

Итак, как я могу сделать показательные надписи сверху Bottom Sheet

Любой может помочь, пожалуйста?

Solutions Collecting From Web of "Высота не работает для BottomSheet внутри расположения координатора"

Ответ таков: нет, это невозможно (если вы не создаете свой собственный пользовательский вид с функцией высот сверху).

Elevetion не предназначен для просмотра в верхней части окна , а внизу, справа и слева.

Если вы внимательно посмотрите на официальные руководства по дизайну материалов , вы увидите, что нижняя панель просто не имеет его (не путайте серое пространство между картой и нижней панелью).

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

Например: импортируйте карту. Просмотрите образец из Android Studio и поиграйте с ним с эмулятором или устройством. Вы увидите, что если вы увеличиваете значение высоты, вид будет иметь свою тень везде, кроме сверху (см. Второе изображение ниже).

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

Другой пример – импортирование Elevation Basic .

РЕДАКТИРОВАТЬ

Следующий код берется из образца карты . Существует макет, содержащий CardView с высотой . Всякий раз, когда вы меняете высоту, вы всегда будете видеть тень повсюду, но не сверху (код был протестирован с помощью Lollipop и Marshmallow).

 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" > <android.support.v7.widget.CardView android:id="@+id/cardview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:elevation="100dp" card_view:cardBackgroundColor="@color/cardview_initial_background" card_view:cardCornerRadius="8dp" android:layout_marginLeft="@dimen/margin_large" android:layout_marginRight="@dimen/margin_large" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/margin_medium" android:text="@string/cardview_contents" /> </android.support.v7.widget.CardView> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/margin_large" android:orientation="horizontal" > <TextView android:layout_width="@dimen/seekbar_label_length" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="@string/cardview_radius_seekbar_text" /> <SeekBar android:id="@+id/cardview_radius_seekbar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/margin_medium" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="@dimen/seekbar_label_length" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="@string/cardview_elevation_seekbar_text" /> <SeekBar android:id="@+id/cardview_elevation_seekbar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/margin_medium" /> </LinearLayout> </LinearLayout> 

Не забывайте, что для рисования тени вы должны использовать hardwareAccelerated drawing

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

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

См. Раздел « Ускорение оборудования Android».

Попробуй это,

 <android.support.v4.widget.SlidingPaneLayout android:id="@+id/bottom_sheet" xmlns:slide_panel="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" app:behavior_peekHeight="70dp" app:layout_behavior="android.support.design.widget.BottomSheetBehavior" android:background="@drawable/gradiant" android:fillViewport="true" slide_panel:elevation="50dp"> 

Согласно рекомендациям google с андроидом: возвышение невозможно (также вы можете узнать больше о ключевом ключе ).

Во всяком случае, в наиболее распространенных случаях, когда вы просматриваете «BottomSheet», над «BottomSheet» появляется полупрозрачный слой, это помогает держать фокус пользователя на действиях «BottomSheet», как эти примеры .

Если в любом случае вам нужна верхняя тень, вы можете установить рисованный фон с таким градиентом (shadow_top.xml):

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="90" android:centerColor="#000000" android:endColor="@android:color/transparent" android:startColor="#000000" android:type="linear" /> 

И ваш SlidingPanelLayout будет:

 <android.support.v4.widget.SlidingPaneLayout android:id="@+id/bottom_sheet" android:layout_width="match_parent" android:layout_height="match_parent" app:behavior_peekHeight="95dp" android:paddingTop="25dp" app:layout_behavior="android.support.design.widget.BottomSheetBehavior" android:background="@drawable/shadow_top" android:fillViewport="true" > 

С наилучшими пожеланиями.