我正在构建一个新的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
答案 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))