Dialog全屏设置
来源:互联网 发布:电影制作软件 编辑:程序博客网 时间:2024/04/29 22:48
一、Dialog的全屏设置
关于Dialog的全屏设置,网上一大把的方法,但是大多数都不全面或者有一些冗余的设置。这里列出一个最基本的全屏设置方式。
public class FullScreenDialog extends Dialog { public FullScreenDialog(@NonNull Context context) { super(context); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置一个布局 setContentView(R.layout.dialog_test_fullscreen); //设置window背景,默认的背景会有Padding值,不能全屏。当然不一定要是透明,你可以设置其他背景,替换默认的背景即可。 getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); //一定要在setContentView之后调用,否则无效 getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); }}
其中有两点需要说一下
1. setContentView可以在外部调用,不一定要在自定义的Dialog里面。同理,getWindow().setBackgroundDrawable和getWindow().setLayout也可以在外部调用。如下,
Dialog dialog = new Dialog(this);dialog.setContentView(R.layout.dialog_test_fullscreen);dialog.show();dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
2. 背景色可以通过指定Dialog的Theme来完成
<style name="AppTheme.FullScreenDialog" parent="ThemeOverlay.AppCompat.Dialog"> <item name="android:windowBackground">@android:color/transparent</item></style>Dialog dialog = new Dialog(this, R.style.AppTheme_FullScreenDialog);dialog.setContentView(R.layout.dialog_test_fullscreen);dialog.show();dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
二、AppCompatDialog全屏设置
首先,AppCompatDialog是继承于Dialog的,但是加了一些support v7的一些特性和定制。如果我们直接使用上面的方式来设置,会发现达不到全屏效果,对话框的最顶部会出现部分空白。如下:
这个时候,需要额外设置一个属性dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE),话说这个属性我找了很久,最后在support design的BottomSheetDialog看到的。如下:
AppCompatDialog dialog = new AppCompatDialog(this, R.style.AppTheme_FullScreenDialog);dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);dialog.setContentView(R.layout.dialog_test_fullscreen);dialog.show();dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
如果是自定义继承于AppCompatDialog,可以直接在构造方法里设置这个属性,完整示例如下:
public class FullScreenDialog extends AppCompatDialog { public FullScreenDialog(@NonNull Context context) { super(context); supportRequestWindowFeature(Window.FEATURE_NO_TITLE); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置一个布局 setContentView(R.layout.dialog_test_fullscreen); //设置window背景,默认的背景会有Padding值,不能全屏。当然不一定要是透明,你可以设置其他背景,替换默认的背景即可。 getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); //一定要在setContentView之后调用,否则无效 getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); }}
三、Supportv7 AlertDialog全屏设置
AlertDialog继承于AppCompatDialog,但是不用设置supportRequestWindowFeature,设置全屏的方式,和普通Dialog一样。如下:
AlertDialog dialog = new AlertDialog.Builder(this).setTitle("Title") .setMessage("Message") .setNegativeButton("Cancel", null) .setPositiveButton("Sure", null) .create();dialog.show();dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.YELLOW));dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
更正:
上面说必须设置一个背景才能全屏,说的是默认背景有padding值,说错了,padding不会影响这个,而是因为默认背景有inset值,如下:
<inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetLeft="16dp" android:insetTop="16dp" android:insetRight="16dp" android:insetBottom="16dp"> <shape android:shape="rectangle"> <corners android:radius="2dp" /> <solid android:color="@android:color/white" /> </shape></inset>
阅读全文
0 0
- Dialog设置全屏
- 设置Dialog全屏显示
- Dialog设置全屏
- dialog 充满全屏设置
- dialog 设置全屏
- 设置全屏dialog
- Dialog全屏设置
- 全屏显示Dialog的设置
- 全屏显示Dialog的设置
- 设置Dialog全屏显示(转)
- dialog样式的activity的全屏设置
- 设置Dialog全屏,并从底部弹出
- android 设置自定义dialog全屏显示
- 代码设置Dialog全屏且透明
- dialog style 的 activity 的全屏设置 (dialog适用)
- 设置Dialog全屏,背景使用Dialog布局颜色
- 如何设置Dialog铺满全屏,更改Dialog的显示位置!!!
- 全屏dialog
- Dubbo源码介绍
- Mysql报错注入原理分析(count()、rand()、group by)
- Android异步任务机制之AsycTask
- Thread+Handler异步执行耗时操作更新UI线程界面
- Java1.8新特性 Lambda/Stream/函数式编程
- Dialog全屏设置
- B
- 串口DMPL指令刻字机自动识别图形轮廓并刻绘py
- 拼多多面试
- go 基础,go path go isntall
- 算法应用新篇
- html css 制作出翻页的时候慢慢的出来,或者放大缩小
- Linux 网络编程——TCP 粘包及其解决方案
- HashCode的理解与应用