0

我有一个EditText大小为 300dp * 300dp 的视图。

此 EditText 用于显示从服务器接收到的一些描述的预览,因此如果文本太长,则在最后一行显示剪切。我希望在文本太长的情况下,在最后一个完全可见的行的末尾显示悬挂点以避免截断错误

例子

如果对于文本

Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. 

如果最大可见文本仅为

Lorem ipsum dolor sit amet, consectetur adipisici elit,

EditText 应该显示

Lorem ipsum dolor sit amet, consectetur adipisici...

有什么解决办法吗?

4

2 回答 2

7

如果您的消息是从服务器获得的描述,并且用户编辑它是没有用的,为什么不使用它TextView呢?

    <TextView
        ...
        android:ellipsize="end"
        android:singleLine="true" />

同样你可以实现EditText,但你也必须设置android:editable="false"

于 2012-07-21T10:18:33.917 回答
0

您可以使用 Paint 类中的 measureText 测量文本宽度如果文本对于视图来说太长,只需搜索适合该宽度的子字符串。

例如,如果viewEditText

String text = "Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.";
String subtext = text;
Paint paint = view.getPaint();

while( paint.measureText(subtext) > view.getWidth() ) {
    subtext = subtext.substring(0, subtext.lastIndexOf(' '));
}

view.setText(subtext + "...");
于 2012-07-21T10:40:39.220 回答