2012-07-12 129 views
4

我正在使用DialogFragment,並想知道是否有一種簡單的方法來指定在普通/小尺寸設備(電話)上使用全屏幕的對話框。我想要實現的示例是在您選擇安裝應用程序後在Google Play上顯示的確認/權限對話框。電話上的DialogFragment填充屏幕

enter image description here

+0

只是好奇。你如何確定它是電話還是桌子? – Seunghoon 2012-07-13 02:50:57

+0

我不知道有什麼確定的方式來確定差異取決於實施。我的問題是在普通/小屏幕上顯示全屏對話框。 – mkso 2012-07-13 14:43:29

+1

[對話框片段嵌入取決於設備]的可能重複(http://stackoverflow.com/questions/10996217/dialog-fragment-embedding-depends-on-device) – EdChum 2012-12-13 18:14:04

回答

2

在平板電腦,在一個正常的方式顯示對話框。

DialogFragment newFragment = MyDialogFragment.newInstance(); 
newFragment.show(getFragmentManager(), "dialog"); 

在Phone中,將DialogFragment添加到Activity的onCreate()中的普通片段的佈局中。

@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> 

注:嵌入式由<片段>標籤斷不起作用。

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()的末尾調用此方法。

希望這有助於 碧玉