由于.9背景图引发的linearlayout布局margin以及padding属性改变造成重新设置背景图linearlayout大小不对问题。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Lemon_husky/article/details/82771010

场景:

在实际工作中,有两个嵌套的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属性可以在上面代码中写入哦。

猜你喜欢

转载自blog.csdn.net/Lemon_husky/article/details/82771010