在日常开发中,总是会遇到各种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)//定义一个LayoutParams2、在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
其他以此类推
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)