是否可以在模态底页对话框中找到的持久底页上添加叠加?我实现了一个底片,里面有一个framelayout,并做了一些片段交易。
<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();
}
所以,我发现使用持久性对话框可以更好地完成工作,但我希望屏幕区域上的模态覆盖不被工作表覆盖。