2015-10-14 112 views
6

你好我已經嘗試覆蓋全屏的dialogFragment的主題,但我想要的全屏幕是在上一個活動的頂部覆蓋,所以當dialogFragment打開時,我們仍然可以看到從屏幕和dialogFragment之間的填充返回活動。Android:如何將dialogFragment設置爲全屏

這是我用來全屏樣式

<style name="fullscreen_dialog" parent="android:Theme" > 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFullscreen">true</item> 
    <item name="android:windowIsFloating">false</item> 
</style> 
+0

[在Android的全屏DialogFragment](可能的重複http://stackoverflow.com/questions/7189948/full-screen-dialogfragment-in-android) – Distwo

回答

0

你可以隻手動設置佈局PARAMS在代碼中像這樣。希望能幫助到你 ! :)。還要檢查它這個SO Adjusting size of custom dialog box in android

Window window = myDialog.getWindow(); 
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
31

這是我想通了處理您的問題的解決方案:

@Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     Dialog dialog = super.onCreateDialog(savedInstanceState);  
     dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
     return dialog; 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     Dialog dialog = getDialog(); 
     if (dialog != null) { 
      dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
      dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
     } 
    } 
+2

在onStart()中添加邏輯確實有效。謝謝! –

+1

謝謝,它的作品! – Herman

1
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
    getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
1

有改變的風格和主題的方法。

/* theme is optional, I am using leanback... */ 
setStyle(STYLE_NORMAL, R.style.AppTheme_Leanback); 

我測試它得到全屏,它的工作很好,簡單的佈局。

6

你也可以做一些喜歡 -

@Override 
    public void onCreate(@Nullable final Bundle savedInstanceState) { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     setStyle(STYLE_NO_TITLE, android.R.style.Theme_Material_Light_NoActionBar_Fullscreen); 
    } else { 
     setStyle(STYLE_NO_TITLE, android.R.style.Theme_DeviceDefault_Light_NoActionBar); 
    } 
    super.onCreate(savedInstanceState); 

    } 
+0

謝謝,這似乎是唯一適合我的工作,與其他人提到的onStart中的MATCH_PARENT一起使用。 – Aranda

0

FWIW,我不得不設置一個子類關閉@風格/ Base.Theme.AppCompat.Light一個特殊的風格。否則,沒有任何支持庫字段看起來是正確的。如果您使用@ style/Base.Theme.AppCompat.Light.Dialog,它會創建我不想要的浮動外觀。

7

下面的解決方案對我來說非常合適。

的片段對話框如下圖所示創建樣式:

<style name="dialog_theme" parent="android:Theme" > 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowIsFloating">false</item> 
</style> 

創建您的Java類,如下:

public class FiltersDialogFragment extends android.support.v4.app.DialogFragment { 

    static FiltersDialogFragment newInstance() { 
     FiltersDialogFragment fragment = new FiltersDialogFragment(); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setStyle(DialogFragment.STYLE_NORMAL, R.style.dialog_theme); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     Dialog d = getDialog(); 
     if (d!=null){ 
      int width = ViewGroup.LayoutParams.MATCH_PARENT; 
      int height = ViewGroup.LayoutParams.MATCH_PARENT; 
      d.getWindow().setLayout(width, height); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.dialog_filters, container, false); 
     return view; 
    } 
} 

編碼愉快!

+0

工作完美。不錯的工作 – KingWu

相關問題