全屏自定义对话框?
有什么办法使我的对话视图全屏,即对话占据整个屏幕(如活动)。 我尝试使用LayoutParams和样式像<item name="android:windowFullscreen">true</item>
但似乎没有任何工作。
我find了摆脱标题栏的方法,但找不到一个方法来在全屏幕中放置一个对话框。 所以任何人都可以build议我做一个方法。
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyTheme" parent="@android:style/Theme.Dialog"> <item name="android:windowFullscreen">true</item> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowBackground">@color/dialog_background</item> </style> </resources>
给它的构造函数一个非对话框主题,比如android.R.style.Theme或者android.R.style.Theme_Light 。
以下代码适用于我的情况:
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.mydialog2); dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
尝试这个
dialog = new Dialog(context,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
答案不适用于我(sdk 21,samsung galaxy s5)。 在search和testing之后,我发现在对话框样式中设置全屏对话框的关键是<item name="android:windowIsFloating">false</item>
。 sdk中的大多数Dialog风格设置为true! 在样式中设置为false,并将其用于
AlertDialog.Builder = new AlertDialog.Builder(getActivity(), R.style.YourStyle);
你的风格可能看起来像
<style name="YourStyle"> <item name="android:windowIsFloating">false</item> ... </style>
设置为false后,应该是全屏。 还有更多,你可以使用
dialog.getWindow.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
将其高度设置为wrap_content。 希望能帮助别人。
试试这个代码
protected void openDialog() { Dialog dialog = new Dialog(this); dialog.addContentView(new View(this), (new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT))); dialog.show(); }
1.定制你的对话风格
<style name = "MyDialog" > <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowIsTranslucent">true</item> <item name = "android:windowContentOverlay" >@null</item > <item name = "android:colorBackgroundCacheHint" >@null</item > <item name = "android:backgroundDimEnabled">true</item> <item name = "android:windowBackground" >@android:color/transparent</item > </style >
我正在使用一个活动与对话主题。 在这种情况下,全屏幕这样工作:
int mUIFlag = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().getDecorView().setSystemUiVisibility(mUIFlag); getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); setContentView(R.layout.lockscreen_activity); }
对于全屏对话框,你应该扩展DialogFragment它将提供片段生命周期方法,这是在android开发人员文档中推荐的方法,你也可以使用简单的Dialog或AlertDialog。
当你创build对话框实例时,只需使用“android.R.style.Theme_Black_NoTitleBar_Fullscreen”主题,如下所示:
Dialog dialog = new Dialog(getActivity(), android.R.style.Theme_Black_NoTitleBar_Fullscreen);
要么
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), android.R.style.Theme_Black_NoTitleBar_Fullscreen);
这将全屏显示对话框。 希望这可以帮助。 谢谢 :)
尝试将您的dialog_custom_layout.xml
包装到RelativeLayout
。 这对我有效。