【发布时间】:2011-09-21 22:03:05
【问题描述】:
我有 5 个文本视图,每个文本视图都有自己的背景,它们是一个相邻的, 它们的大小会根据我放入其中的文本量而变化。我想知道是否 在任何时候,它们都会停止拟合,因为它们到达了父级的边界。但不仅如此,如果它们不合适,我还希望能够添加诸如“单击此处查看更多”之类的内容。那么,当我向它们添加文本时,如何检测它们占用了多少空间?谢谢
【问题讨论】:
我有 5 个文本视图,每个文本视图都有自己的背景,它们是一个相邻的, 它们的大小会根据我放入其中的文本量而变化。我想知道是否 在任何时候,它们都会停止拟合,因为它们到达了父级的边界。但不仅如此,如果它们不合适,我还希望能够添加诸如“单击此处查看更多”之类的内容。那么,当我向它们添加文本时,如何检测它们占用了多少空间?谢谢
【问题讨论】:
您可以使用TextUtils.ellipsize。
维护成员中的实际文本。以文本为参数调用 ellipsize,并将返回的文本设置为 textview。
您可以设置一个回调TextUtils.EllipsizeCallback,当文本变长时会调用它。
TextUtils.EllipsizeCallback ellipsizeCallback = new TextUtils.EllipsizeCallback(){
void ellipsized(int start, int end) {
// enable the `click here to see more` button.
}
}
...
CharSequence elipsizedText = ellipsize (mtext, mtxtpaint,
avail, TextUtils.TruncateAt.END ,
preserveLength, ellipsizeCallback);
tv.setText(mtext);
【讨论】: