美文网首页Android实践Android开发Android知识
无意间遇到的TextView的一个坑

无意间遇到的TextView的一个坑

作者: 山水相逢z | 来源:发表于2016-10-31 21:29 被阅读464次

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

<!--文本少的item-->
<LinearLayout    
android:id="@+id/ll"    
android:layout_width="match_parent"    android:layout_height="wrap_content"    
android:background="#e6e9ed"    
android:gravity="center_vertical|right">    
<TextView        
android:id="@+id/title"        
android:layout_width="wrap_content"        
android:layout_height="match_parent"        
android:gravity="bottom"        
android:text="我们右边引用的是同一张图片"        
android:textSize="16sp" />
<ImageView        
android:id="@+id/icon"        
android:layout_width="wrap_content"        
android:layout_height="wrap_content"        
android:layout_marginLeft="17dp"        
android:layout_marginRight="23dp"        
android:background="@drawable/test" />
</LinearLayout>


<!--文本多的item-->
<LinearLayout    
android:id="@+id/ll"    
android:layout_width="match_parent"    
android:layout_height="wrap_content"    
android:layout_marginTop="50dp"    
android:background="#e6e9ed"    
android:gravity="center_vertical|right">    
<TextView        
android:id="@+id/title"        
android:layout_width="wrap_content"        
android:layout_height="match_parent"        
android:gravity="bottom"        
android:text="我们右边引用的是同一张图片,我字数多"        
android:textSize="16sp" />
<ImageView        
android:id="@+id/icon"        
android:layout_width="wrap_content"        
android:layout_height="wrap_content"        
android:layout_marginLeft="17dp"        
android:layout_marginRight="23dp"        
android:background="@drawable/test" />
</LinearLayout>

运行效果如下图:

屏幕快照 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了。代码如下:

<LinearLayout    
android:id="@+id/ll"    
android:layout_width="match_parent"    
android:layout_height="wrap_content"    
android:layout_marginTop="50dp"    
android:background="#e6e9ed"    
android:gravity="center_vertical|right">    
<TextView        
android:id="@+id/title"        
android:layout_width="wrap_content"        
android:layout_height="match_parent"        
android:layout_weight="1"        
android:ellipsize="end"        
android:gravity="bottom"        
android:singleLine="true"        
android:text="我们右边引用的是同一张图片,我字数多"        
android:textSize="16sp" />    
<ImageView        
android:id="@+id/icon"        
android:layout_width="wrap_content"        
android:layout_height="wrap_content"        
android:layout_marginLeft="17dp"        
android:layout_marginRight="23dp"        
android:background="@drawable/test" />

运行效果就正常了:

屏幕快照 2016-10-31 下午9.28.48.png

相关文章

  • 无意间遇到的TextView的一个坑

    今天解bug的时候遇到一个奇怪的问题:listview的item由一个textview和一个imageview组成...

  • Android 富文本处理

    最近遇到了一些富文本处理的坑,特此分享下 TextView Html.fromHtml(data.getPro_j...

  • Android-Resources$NotFoundExcept

    真的是实力踩坑,踩过的坑真的有必要记录下来,这不知道是多少次遇到过了。对,你真没看错,就是一个TextView调用...

  • TextView的一个小技巧

    在使用textview作为评论输入页面的时候我遇到这么一个需求: 需要在每次输入结束后对textview的字符内容...

  • AndroidStudio代码规范——TextView

    AndroidStudio代码规范——TextView 我们在使用TextView显示内容的过程中,经常遇到需要显...

  • 【Android】如何主动制造一个ANR事件

    正文【Android寻坑之路】应用ANR分析传送门 新建一个Demo,在TextView的onClick事件中使用...

  • Textview点击坑

    textview设置inputtype属性后,似乎变成了edittext,长按会有游标出现,还会影响listvie...

  • ##TextView 行末...详情实现

    TextView 行末...详情实现 作为Android开发人员,会经常遇到产品针对TextView显示的各种需...

  • TextView.setText() 的一个小坑

    这是一个 Adapter : 这是对应的 Activity : 奇怪的是列表总是没数据显示出来。 看 log 的输...

  • 遇到的坑

    1.文字两端居中 2.多个异步请求的执行顺序 点击页面上一个按钮发送两个ajax请求时,这两个异步请求会同时发送,...

网友评论

    本文标题:无意间遇到的TextView的一个坑

    本文链接:https://www.haomeiwen.com/subject/umbputtx.html