是否可以在模态底页对话框中找到的持久底页上添加叠加层?我实现了一个底部表,其中有一个框架布局并进行了一些片段事务。
<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();
}
因此,我发现使用持久对话框会更好地完成这项工作,但我希望在表单未覆盖的屏幕区域上进行模态覆盖。