Android ellipsize无法正常运行

时间:2013-01-05 20:56:37

标签: android android-layout textview

我正在构建一个新的InfoWindow(谷歌地图api v2),我试图让我的布局变得完美。 这种布局的一部分是:

  <LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
  android:id="@+id/txtInfoWindowName"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  android:ellipsize="end"
  android:singleLine="true"
  android:textColor="#ff000000"
  android:textSize="14dp"
  android:textStyle="bold"/>
<TextView
  android:id="@+id/txtInfoWindowObstacles"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:ellipsize="end"
  android:maxLength="32"
  android:lines="1"
  android:singleLine="true"
  android:textColor="#ff7f7f7f"
  android:textSize="14dp"/>

现在,问题在于android:ellipsize="end". 它应该在最后绘制三个点,但它不会那样做。 现在我得到这样的东西:

TextTextTextTextTe

而不是:

TextTextTextTextTe...

我认为这与我正在使用layout_width =“wrap_content”的事实有关。但我需要这个,因为我使用的是LinearLayout

2 个答案:

答案 0 :(得分:8)

我尝试了你的代码并且它们工作正常,除了第二个具有属性android:maxLength="32"的TextView,在这种情况下,由于32个字符限制,文本无法进行椭圆化处理。但如果你删除它,它会按预期工作。

答案 1 :(得分:3)

还有另一种选择 - 您可以使用以下代码格式化字符串:

private static final int STR_MAX_CHAR_COUNT = 32;

private String formatString(String stringToFormat) {
    if(stringToFormat.length() > STR_MAX_CHAR_COUNT){
        stringToFormat = stringToFormat.substring(0, STR_MAX_CHAR_COUNT - 1) + "...";
    }
    return stringToFormat;
}

然后只需设置如下字符串:

String newText = "some long-long text";
mTextView.setText(formatString(newText))