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。

在日常开发中,总是会遇到各种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方法中:


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

原文地址: https://outofmemory.cn/tougao/11208861.html

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

发表评论

登录后才能评论

评论列表(0条)

保存