web-dev-qa-db-de.com

Android BottomSheet: Verbirgt sich unter der Symbolleiste

Ich habe versucht, das neue unterste Blatt aus der Unterstützungsbibliothek 23.2.0 zu verwenden, um ein unteres Blatt auf Vollbild zu vergrößern, wie in den Designrichtlinien vorgeschlagen

Das funktioniert sehr gut, aber das unterste Blatt geht unter meiner ActionBar und unter meinen Registerkarten.

Wie ist es möglich, das untere Blatt über die Symbolleiste ziehen zu lassen? Mein Menü ist folgendermaßen aufgebaut:

 

    <Android.support.design.widget.AppBarLayout
        Android:id="@+id/appbar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:paddingTop="@dimen/appbar_padding_top">

        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|snap|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay"/>

        <Android.support.design.widget.TabLayout
            Android:id="@+id/tabs"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"/>

    </Android.support.design.widget.AppBarLayout>

    <Android.support.v4.view.ViewPager
        Android:id="@+id/container"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

    <include
        Android:id="@+id/playerLayout"
        layout="@layout/player_main"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:behavior_peekHeight="?attr/actionBarSize"
        app:layout_behavior="@string/bottom_sheet_behavior"
        app:model="@{model}"/>

</Android.support.design.widget.CoordinatorLayout>

 enter image description here

12
Paul Woitaschek

Die Variable AppBarLayout hat eine Standardhöhe von 4dp (dem Dimensionsressourcenwert design_appbar_elevation).

Standardmäßig werden CoordinatorLayout wie alle FrameLayout Layoutelemente mit einer höheren Höhe vor einer niedrigeren Höhe auf API 21- und höheren Geräten angezeigt.

Versuchen Sie, Android:elevation="@dimen/design_appbar_elevation" zu Ihrem Layout hinzuzufügen.

Beachten Sie, dass die Höhe eines modalen unteren Blattes @dimen/design_bottom_sheet_modal_elevation == 16dp ist.

43
ianhanniballake

Wenn die obige Antwort nicht hilft, versuchen Sie, Ihr BottomSheet einzustellen:

Android:elevation="@dimen/design_appbar_elevation" Android:fitsSystemWindows="true"

und erstellen Sie Ihr Fragment so:

videoFragment = VideoFragment.newInstance(); getSupportFragmentManager().beginTransaction() .replace(R.id.video_fragment, videoFragment) .commit();
so nicht: videoFragment = (VideoFragment) getSupportFragmentManager().findFragmentById(R.id.video_fragment);

Zum Beispiel habe ich ein solches Layout:

<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/activity_background">

<Android.support.design.widget.AppBarLayout
    Android:id="@+id/appBar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:theme="@style/ThemeOverlay.AppCompat.ActionBar">

    <include layout="@layout/toolbar"/>

</Android.support.design.widget.AppBarLayout>

<Android.support.v7.widget.RecyclerView
    Android:id="@+id/recycler_view"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

<Android.support.design.widget.BottomNavigationView
    Android:id="@+id/bottom_navigation"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_gravity="bottom"
    app:itemBackground="@color/white"
    app:menu="@menu/bottom_navigation_main"/>

<FrameLayout
    Android:id="@+id/video_fragment"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:elevation="@dimen/design_appbar_elevation"
    Android:fitsSystemWindows="true"
    app:behavior_hideable="true"
    app:behavior_peekHeight="0dp"
    app:layout_behavior="Android.support.design.widget.BottomSheetBehavior"/>


und es funktioniert nicht ohne spezifizierte Dinge

1
Grigory Azaryan