Android如何在java代码中设置margin?

Android如何在java代码中设置margin?,第1张

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方法中:


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存