无意间遇到的TextView的一个坑

今天解bug的时候遇到一个奇怪的问题:listview的item由一个textview和一个imageview组成,父布局是线性水平排列。我的本意是imageview显示相同的图片,textview显示文本,但是运行程序后发现,当某个textview的文本较多时,imageview会被压缩,刚开始没注意,检查代码了好久。代码示例如下:


    






    



运行效果如下图:

无意间遇到的TextView的一个坑_第1张图片
屏幕快照 2016-10-31 下午9.11.59.png

可以发现,第二个布局中,右边图片被“挤扁”了。为什么会出现这种情况?其实很简单, 是textview宽度自适应搞的鬼。水平线形布局中,我们虽然设置了imageview与左右的偏移(margin)值,但是由于自布局textview与imageview是按顺序排列的,textview会首先完成它的自适应,导致字数过多的时候会把右边的imageview压缩,此时imageview的左右margin值还是我们设置的。

那么,怎么设置才能让文本框显示较多文字而又不挤压右边的imageview呢?

答案很简单,还是要在textview的宽度上做文章了。只需要:
textview的width属性依然设置为:wrap_content自适应,再加上一个权重属性即可:weight="1".
这样,textview就会占据水平剩下的空间,而不会去挤压右边的imageivew了。代码如下:

    
    

运行效果就正常了:

无意间遇到的TextView的一个坑_第2张图片
屏幕快照 2016-10-31 下午9.28.48.png

你可能感兴趣的:(无意间遇到的TextView的一个坑)