Android4.0 Margin设置失效解决方法

来源:互联网 发布:结伴旅游软件 编辑:程序博客网 时间:2024/04/29 15:31

Android4.0以下系统FrameLayout布局的子View设置的Margin常常出现失败的情况,而同样的代码在Android4.0及以上的系统中则没有问题。相信此时大多数屌丝程序员都气得很抓狂吧,当初遇到此问题时我也是如此,用百度、谷歌各种搜索都没有很好的解决问题,最后经过自己的研究终于找到了解决问题的方法。

1、在xml布局设置margin失效情况

在要设置Margin的View中加入android:layout_gravity="top|left",则Margin失效问题可以顺利解决;

2、在代码中设置margin失效情况

用如下代码进行设置即可解决问题:

[java] view plaincopy
  1. MarginLayoutParams marginParams = new MarginLayoutParams(this.getLayoutParams());  
  2. marginParams.height = this.getMeasuredHeight();  
  3. marginParams.width = this.getMeasuredWidth();  
  4. marginParams.setMargins(l,t,r,b);  
  5. LayoutParams layoutParams = new LayoutParams(marginParams);  
  6. layoutParams.gravity = Gravity.TOP|Gravity.LEFT;  
  7. this.setLayoutParams(layoutParams);  

也就是说加入
[java] view plaincopy
  1. layoutParams.gravity = Gravity.TOP|Gravity.LEFT;  
即可正常解决问题。

解决问题后分析4.0以下之所以Framelayout设置margin失效原因应该是4.0及以上Framelayout的默认的layout_gravity设置好了"top|left"或有类似逻辑,而4.0以下则没有,所以才会失效。

0 0
原创粉丝点击