如何确定要放在TextView中的文本是否适合单行

时间:2013-01-10 08:04:02

标签: android listview textview

有没有办法确定要放在TextView中的文本内容是否适合单行?

我想要实现的内容显示在附加图像中(它是listView的一部分)。问题与textView#3有关。如果它太大,我想将它放在textView#2下方,但如果内容足够短,我想将它放在textView#2的右边(row#3中看到的情景就是我想要的逃避)

那么,有人吗?..我怎样才能解决这个特殊问题? 我想象我的listview行的单一布局无法实现这一点..

enter image description here

3 个答案:

答案 0 :(得分:2)

有可能。您应该测量文本大小并将其与TextView大小进行比较。如果文字宽度> textView宽度比它太长。

您可以从this post了解文字测量。

您也可以使用TextView的内置功能,并使其成为单行和设置文本椭圆化方法。

答案 1 :(得分:0)

解决方案(并不是一个漂亮的解决方案)是对字符串中textView占用的空间进行一些数学运算。在我的特定情况下,我添加了2个textViews(3& 3B)&取决于我的数学计算所说的 - 我只会使用一个&隐藏另一个。

详细说明:

    适配器的getView方法中的
  1. 找出父listView的宽度

    public View getView(int position,View convertView,ViewGroup parent){     int listViewWidth = parent.getWidth();

  2. 通过放置在同一行的其他textView计算占用的空间(在我的情况下只是textView2);

    Paint paint = textViewX.getPaint(); occupiedWidth =(int)(occupiedWidth + paint.measureText(“要放在textview中的文本”));

  3. 比较文本占用的空间,放置在最后一个textview中(在我的screenShot textView3中,相同的公式计算宽度)&与剩余空间(listViewWidth - occupiedWidth

  4. 进行比较
  5. 将文字设置在正确的textView&隐藏另一个
  6. ..根据需要改进代码
  7. new layout result

答案 2 :(得分:-1)

尝试textview的这个属性

android:maxLength="number of characters you want to display in textview"

现在在Activity中检查字符串长度是否为> maxLength比改变视图的位置。