1. MarginLayoutParams
是 ViewGroup.LayoutParams 的子类
2. 使用
我总结了下,一般我们会在哪些地方使用到 MarginLayoutParams
2.1 Activity/Fragment
这种界面代码中,我们会通过获取它来给View设置参数,比如我的这篇博客
Java设置View 的 Layout_Gravity 和 Gravity
这篇博客的意义不在于学习下这两个属性参数,只是抛砖引玉的学习其他参数的设置。
要使用它,就要获取它。比如有一个Button,我们在 java 代码中设置它的宽高、padding、margin,但是你会发现找不到 view.getMarginLayoutParams ,看下文档就会发现
Even though a view can define a padding, it does not provide any support for margins. However, view groups provide such a support. Refer to ViewGroup and ViewGroup.MarginLayoutParams for further information.
尽管我们可以设置一个view的 padding ,但是并没有提供 margins 的方法支持,然而, viewGroup 提供了这样的方法。看到没,我们要设置 button 的 margin ,还需要通过 ViewGroup.MarginLayoutParams 来,同时它又是 LayoutParams 的子类,所以又可以设置 view 的 width、height 等等,所以相比来说好像大神们都喜欢使用这个。但是比较蛋疼的是,android并没有提供 View.getMargingLayoutParams 方法获取该对象,所以,获取的方法,一般都先获取 LayoutParams 然后将它强转成 MarginLayoutParams 。设置 view 的宽高 间距,在 java 中一般这样写
RelativeLayout.MarginLayoutParams mlp = (RelativeLayout.MarginLayoutParams) tv.getLayoutParams();
mlp.leftMargin = 100;
mlp.width = 200;
tv.setLayoutParams(mlp);
当然也可以使用如下获取
RelativeLayout.MarginLayoutParams mlp = new RelativeLayout.LayoutParams(tv.getLayoutParams());
1
注意:这里的RelativeLayout 是 tv 的父布局
2.2 自定义view或者viewGroup中
如下是自定义viewgroup中
MarginLayoutParams mlp = (MarginLayoutParams) getLayoutParams();
mlp.height = 300;
setLayoutParams(mlp);