Intereting Posts
Установить значок приложения для Android Цвет селектора на LinearLayout Этот класс обработчика должен быть статическим или может возникнуть утечка: IncomingHandler Сделайте снимок с камерой и получите растровое изображение Android AsyncTask Индикатор выполнения Отправить push-уведомление с сервера на Android-устройство в Java Android SearchView.OnQueryTextListener OnQueryTextSubmit не запускается в пустой строке запроса Какой шрифт я должен использовать для TextView, который может поддерживать все языки? Ли RecognitionListener.onError () автоматически SpeechRecognizer.cancel ()? Можно ли изменить контекст приложения во время жизненного цикла приложения? Кнопка возврата ActionBarActivity не выскочит из задней части Почему иногда сохраняется сохранение Hashtable объектов, не являющихся объектами в onSaveInstanceState ()? Возможно ли создать расширяемый список AlertDialog? Android Matrix multiplyMM подробно Борьба с SurfaceView, камерой и OpenGL

Высота не работает для 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" > 

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