5

是否可以在模态底页对话框中找到的持久底页上添加叠加层?我实现了一个底部表,其中有一个框架布局并进行了一些片段事务。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/bottom_sheet"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="2sp"
            android:layout_marginRight="2sp"
            android:layout_marginTop="?attr/actionBarSize"
            android:clickable="true"
            android:orientation="vertical"
            app:elevation="4sp"
            app:layout_behavior="@string/bottom_sheet_behavior">

            <FrameLayout
                android:id="@+id/function_frame"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginLeft="2sp"
                android:layout_marginRight="2sp"
                android:layout_marginTop="?attr/actionBarSize"
                android:background="#fafafa"
                android:elevation="4sp">

            </FrameLayout>
        </LinearLayout>

当它展开并按下后退按钮时,片段将从堆栈中删除。但是当我使用模态对话框时,对话框被关闭。

@Override
public void onBackPressed() {
    Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.function_frame);
    if (fragment.getFragmentManager().getBackStackEntryCount() == 0) {
        if (mBottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED) {
            mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
            return;
        }
    }
    super.onBackPressed();
}

因此,我发现使用持久对话框会更好地完成这项工作,但我希望在表单未覆盖的屏幕区域上进行模态覆盖。

4

0 回答 0