1. 程式人生 > >由於.9背景圖引發的linearlayout佈局margin以及padding屬性改變造成重新設定背景圖linearlayout大小不對問題。

由於.9背景圖引發的linearlayout佈局margin以及padding屬性改變造成重新設定背景圖linearlayout大小不對問題。

場景:

在實際工作中,有兩個巢狀的Liearlayout,外層Linearlayout沒有margin,padding等屬性且用於填充背景,預設填充.9背景圖,內層linearlayout用於填充會話view。

需要.9背景的view 新增進去,顯示沒有問題。當新增進去不需要背景的view並設定外層Linearlayout背景為空時,發現外層linearlayout距離內層背景會有空。因業務需要需要將空去除。

如圖:

                     圖一:需要背景圖時

                     圖2 在圖一基礎上設定為沒有背景時效果

                    圖3 想要的效果,外層和內層位置相同

如圖所示1到2所示,外層linearyout依然距離內層有距離。經過Debug分析,發現經過.9背景設定後,外層Linearyout有了padding,以及mairgin屬性,要想達到圖3要的效果,需要將此值設為想要的值,如下程式碼:

//該layoutParams為包裹在外層Linearyout父佈局的型別。
RelativeLayout.LayoutParams lp = new 
                          RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//設定margin值
lp.setMargins(0, 0, 0, 0);
//設定padding值
flMsg.setPadding(0,0,0,0);
//給需要設定的Linearyout重新設定layoutParams屬性
linearyout.setLayoutParams(lp);
//設定背景圖片為透明
linearyout.setBackgroundResource(0);

PS:如果想要margin,padding屬性可以在上面程式碼中寫入哦。