1、比如imageView,有一个getLayout方法,获得的layout在强转类型到LinearLayout或者其他,然后再设定margin什么的。
2、我们平常可以直接在xml里设置margin,如:
Xml代码 <ImageView android:layout_margin="5dip" android:src="@drawable/image" />
但是有些情况下,需要在java代码里来写,可是View本身没有setMargin方法,怎么办呢?
通过查阅android api,我们发现android.view.ViewGroup.MarginLayoutParams有个方法
setMargins(left, top, right, bottom)。
其直接的子类有: FrameLayout.LayoutParams, LinearLayout.LayoutParams and RelativeLayout.LayoutParams。
padding也是复合属性 padding:20px 上右下左都是20px
顺序是按照 上右下左的顺序来设置的(padding: 20px 15px 10px 5px )
分开设置: padding-top:20px
padding-right:15px
padding-bottom: 10px
padding-left:5px
下面的会把上面的属性值覆盖: padding:20px
padding-top:40px
padding:10px 20px 15px:( 上10px 左右20px 下15px)
上下 10px 左右 20px :( padding:10px 20px)
上右下左的外边距都是30px :margin:30px
上边距30 左右20 下40 :( margin:30px 20px 40px)
上下10 左右30 :( margin:10px 30px )
也可以分开写:margin-top: 10px
margin-right: 20px
margin-bottom: 30px
margin可以给负值,会超出边界 : margin-left: -40px
下面的会把上面相同属性的值覆盖 :margin:30px
margin-left:-30px
在日常开发中,总是会遇到各种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方法中:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)