Android Dialog 设置Margin方式总结

Android Dialog 设置Margin方式总结,第1张

在日常开发中,总是会遇到各种Dialog的使用,调整根据UI设计的不同,会经常调整Dialog在屏幕中的位置,这篇文章主要介绍,在使用 DialogFragment 时设置Margin的几种方式。

如下是最后实现的效果

设置两边margin效果:

设置顶部margin效果:

全屏的Dialog设置顶部Margin:

这个比较容易,主要就是设置一个高度wrap_content,宽度match_parent的dialog,然后在dialog的布局中设置margin就可以了。

如下是xml文件:

然后在DialogFragment的onResume里对Window做一些处理:

这种情况margin可以通过 WindowManager.LayoutParams 的 verticalMargin 属性来实现。 verticalMargin 和xml里面设置的layout_margin不一样, verticalMargin 是通过设置一个0-1的float变量,来标识margin在屏幕中的占比。

如下是在DialogFragment的onResume中的处理:

xml文件(和1的类似,没有什么特别):

这里如果使用2中的方法,没有任何效果。这里使用另外一种方式实现-- insetDrawable 。

这里的实现是在xml里面写一个 <inset>:

在DialogFragment的onResume方法中:

1、定义LayoutParams

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)//定义一个LayoutParams

2、在LayoutParams中设置marginLeft

layoutParams.setMargins(20,0,0,0)//4个参数按顺序分别是左上右下

3、把这个LayoutParams设置给控件

mView.setLayoutParams(layoutParams) //mView是控件

android 中有两种边距:外边距margin 和内边距 padding

假设一个控件A和一个控件B

设置A控件的外边距(上下左右)为10dp的代码为:

margin:10dp

设置A空间的外边距(上)为10dp的代码为:

margin-top:10dp

其他以此类推


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11174340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存