我想创建一个在单击按钮时弹出的窗口,我可以在其中提供一些可供选择的按钮,这些按钮可用于向主要活动提供一些数据。
我尝试了对话框和框架布局。对话框的问题是它没有覆盖整个屏幕。我面临的使用片段事务的框架布局的问题是,当框架布局出现时,主要活动的布局也是可见的。
例如。
但是当我点击按钮从下面显示窗口时:
IE。活动中的图像和开始按钮也可见。它应该用我尝试在 FrameLayout 中将背景颜色设置为白色的片段窗口部分覆盖活动。
我想创建一个在单击按钮时弹出的窗口,我可以在其中提供一些可供选择的按钮,这些按钮可用于向主要活动提供一些数据。
我尝试了对话框和框架布局。对话框的问题是它没有覆盖整个屏幕。我面临的使用片段事务的框架布局的问题是,当框架布局出现时,主要活动的布局也是可见的。
例如。
但是当我点击按钮从下面显示窗口时:
IE。活动中的图像和开始按钮也可见。它应该用我尝试在 FrameLayout 中将背景颜色设置为白色的片段窗口部分覆盖活动。
试试这种代码方式来显示窗口
public void showDefaultDialog() {
final Dialog dialog = new Dialog(MainActivity.this, android.R.style.Theme_Holo_Dialog);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().getAttributes().windowAnimations = R.style.animWindow;
dialog.setContentView(R.layout.dialogview);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.WHITE));
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
}
将下面的代码行放在 style.xml 文件中
<style name="animWindow">
<item name="@android:windowEnterAnimation">@anim/bottom_to_top</item>
<item name="@android:windowExitAnimation">@anim/top_to_bottom</item>
</style>
将下面的代码行放在drawable文件夹中
-bottom_to_top.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="100%p"
android:toYDelta="0%p"
android:fillAfter="true"
android:duration="700" />
</set>
- top_to_bottom.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="0%p"
android:toYDelta="100%p"
android:fillAfter="true"
android:duration="700" />
</set>
您已经尝试过使用 a Dialog
,所以也许BottomSheetDialogFragment
对您来说是一个不错的选择,因为它从DialogFragment
.
有一篇带有简短示例的 Medium 博客文章:Using BottomSheetDialogFragment with Material Design Guideline
由于您需要全屏Dialog
:BottomSheetDialogFragment - 如何设置扩展高度(或最小顶部偏移)是关于设置扩展高度的 SO 帖子BottomSheetDialogFragment
。