由於.9背景圖引發的linearlayout佈局margin以及padding屬性改變造成重新設定背景圖linearlayout大小不對問題。
阿新 • • 發佈:2018-12-11
場景:
在實際工作中,有兩個巢狀的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屬性可以在上面程式碼中寫入哦。