Android4.0以下Margin設置失效解決方法

Android4.0以下系統FrameLayout佈局的子View設置的Margin常常出現失敗的情況,而同樣的代碼在Android4.0及以上的系統中則沒有問題。相信此時大多數屌絲程序員都氣得很抓狂吧,當初遇到此問題時我也是如此,用百度、谷歌各種搜索都沒有很好的解決問題,最後經過自己的研究終於找到了解決問題的方法。

1、在xml佈局設置margin失效情況

在要設置Margin的View中加入android:layout_gravity="top|left",則Margin失效問題可以順利解決;

2、在代碼中設置margin失效情況

用如下代碼進行設置即可解決問題:

MarginLayoutParams marginParams = new MarginLayoutParams(this.getLayoutParams());
marginParams.height = this.getMeasuredHeight();
marginParams.width = this.getMeasuredWidth();
marginParams.setMargins(l,t,r,b);
LayoutParams layoutParams = new LayoutParams(marginParams);
layoutParams.gravity = Gravity.TOP|Gravity.LEFT;
this.setLayoutParams(layoutParams);

也就是說加入
layoutParams.gravity = Gravity.TOP|Gravity.LEFT;
即可正常解決問題。

解決問題後分析4.0以下之所以Framelayout設置margin失效原因應該是4.0及以上Framelayout的默認的layout_gravity設置好了"top|left"或有類似邏輯,而4.0以下則沒有,所以纔會失效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章