Android自定义控件GroupView之MarginLayoutParams

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);
 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值