DialogFragment在手机上如何填满整个屏幕

6
我正在使用一个DialogFragment,并想知道是否有一种简单的方法来指定对话框在正常/小尺寸设备(手机)上使用全屏。我想要实现的示例是在选择安装应用程序后,在Google Play上显示的确认/权限对话框。enter image description here

只是好奇,你如何确定它是手机还是平板电脑? - Seunghoon
我不知道有任何明确定义的方法来确定差异,这取决于实现。我的问题是如何在普通/小屏幕上显示全屏对话框。 - mkso
1
可能是Dialog fragment embedding depends on device的重复问题。 - EdChum
3个回答

6
如果您想使用DialogFragment填充屏幕,只需更改主题。对于全屏,请使用android.R.style.Theme_Holo_Light;对于非全屏对话框,请使用android.R.style.Theme_Holo_Light_Dialog。
在调用中使用这些值:
setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style.Theme_Holo_Dialog); // 举例
我在onCreate()的末尾调用此方法。
希望这可以帮助您。 Jasper

2
在平板电脑上,以正常方式显示对话框。
DialogFragment newFragment = MyDialogFragment.newInstance();
newFragment.show(getFragmentManager(), "dialog");

在手机应用中,在Activity的onCreate()方法中,像正常的Fragment一样将DialogFragment添加到布局中。
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (savedInstanceState == null) {
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        DialogFragment newFragment = MyDialogFragment.newInstance();
        ft.add(R.id.embedded, newFragment);
        ft.commit();
    }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/embedded"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

</FrameLayout>

注意:由<Fragment>标签嵌入的片段无法正常工作。

0

曾经有一个相同的问题(带有完全相同的图表!)和答案(由提问者回答)。答案也是有效的,利用了资源文件分类的优势。对话框片段嵌入取决于设备


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接