Android BottomSheet расширяется до нижней части другого представления

Я пытаюсь сделать так, чтобы этот нижний лист расширялся только до нижней части другого представления, но не смог этого понять. Я бы хотел, чтобы locations_list_sheet расширялся до нижней части view1.

Я пытался установить смещение, bottomSheet.setExpandedOffset(48), но безуспешно. Я также пытался установить поле в верхней части макета нижнего листа, но это тоже не выглядело правильно.

<layout xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <View
            android:id="@+id/view1"
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:background="@android:color/transparent" />

        <include
            android:id="@+id/map_content"
            layout="@layout/content_locations_stoneco" />

        <include
            android:id="@+id/locations_list_content"
            layout="@layout/bottom_sheet_locations" />

    </androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>

Макет


person MrBovineJoni    schedule 27.05.2020    source источник
comment
Изображение того, что вы хотите, было бы лучше ... чтобы найти быстрое решение   -  person AgentP    schedule 27.05.2020
comment
попробуйте установить app:behavior_peekHeight="48dp"/использовать bottomSheetBehavior.setPeekHeight(48), как указано здесь - stackoverflow.com/a/35696248/6763544   -  person Sairaj Sawant    schedule 27.05.2020
comment
@PraveenSP добавил фото. Я хочу, чтобы нижний лист расширялся до нижней части зеленой полосы в верхней части макета. В настоящее время он разворачивается на весь экран поверх зеленой полосы.   -  person MrBovineJoni    schedule 27.05.2020


Ответы (2)


Я не знаю, какой именно макет вы используете в качестве нижнего листа, я думаю, что он должен быть в одном из включенных макетов...

добавить атрибут android:translationY="48dp" для макета нижнего листа

    <LinearLayout
            android:layout_width="match_parent"
            android:id="@+id/botto_sheet"
            android:translationY="48dp"
            android:background="@color/colorPrimary"          
            app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
            android:layout_height="match_parent"/>

Что он делает, так это то, что он толкает вид вниз... точно так же, как margin, но немного по-другому.

Примечание. Я не знаю, правильный ли это способ сделать это, но он выполняет свою работу ... Предложения всегда приветствуются.

Кстати, вы можете добавить верхнее поле, и оба будут работать

person AgentP    schedule 27.05.2020

Я считаю, что эта библиотека поможет вам добиться желаемого!

Пример с сайта:

<com.sothree.slidinguppanel.SlidingUpPanelLayout
xmlns:sothree="http://schemas.android.com/apk/res-auto"
android:id="@+id/sliding_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom"
sothree:umanoPanelHeight="68dp"
sothree:umanoShadowHeight="4dp">

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:text="Main Content"
    android:textSize="16sp" />

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center|top"
    android:text="The Awesome Sliding Up Panel"
    android:textSize="16sp" />

person F.Mysir    schedule 27.05.2020
comment
Предпочтительно использовать нативные решения (без внешних библиотек). - person Sairaj Sawant; 27.05.2020
comment
Хорошо, это может помочь кому-то еще, кто хочет расширяться снизу. Я использовал его в одном из своих старых проектов... - person F.Mysir; 27.05.2020