2015-10-14 129 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

相关问题