我现在拥有的是TextView元素的ListView。每个TextView元素都显示一个文本(文本长度从12个字到100+不等)。我想要的是让这些TextViews显示文本的一部分(比方说20个字或大约170个字符)。
如何将TextView限制为固定数量的字符?
答案 0 :(得分:143)
这是一个例子。我使用maxLength属性限制size,使用maxLines属性将其限制为单行,然后使用ellipsize = end自动添加“...”到任何已截断的行的末尾。
<TextView
android:id="@+id/secondLineTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:maxLength="10"
android:ellipsize="end"/>
答案 1 :(得分:6)
在TextView中使用以下代码
android:maxLength="65"
...享受
答案 2 :(得分:6)
如果您对xml解决方案不感兴趣,可以这样做:
String s="Hello world";
Textview someTextView;
someTextView.setText(getSafeSubstring(s, 5));
//the text of someTextView will be Hello
...
public String getSafeSubstring(String s, int maxLength){
if(!TextUtils.isEmpty(s)){
if(s.length() >= maxLength){
return s.substring(0, maxLength);
}
}
return s;
}
答案 3 :(得分:2)
您可以使用TextView类的setEllipsize方法 http://developer.android.com/reference/android/widget/TextView.html#setEllipsize(android.text.TextUtils.TruncateAt)
使用TextUtil类的常量添加暂停点 http://developer.android.com/reference/android/text/TextUtils.TruncateAt.html
答案 4 :(得分:2)
我使用maxEms
属性来完成此操作。
<TextView
android:ellipsize="end"
android:maxEms="10"/>
答案 5 :(得分:1)
程序化Kotlin。
删去文本开头:
val maxChars = 10000
if (helloWorldTextView.text.length > maxChars) {
helloWorldTextView.text = helloWorldTextView.text.takeLast(maxChars)
}
删去文本结尾:
val maxChars = 10000
if (helloWorldTextView.text.length > maxChars) {
helloWorldTextView.text = helloWorldTextView.text.take(maxChars)
}
答案 6 :(得分:1)
我正在分享一个示例,其中我设置了maxLength = 1,即将其限制为具有maxLines属性的单行,然后使用ellipsize = end将“ ...”自动添加到已隔断。
请注意:layout_width为120dp,即任何文本120dp之后 超出将触发“ ellipsize = end”属性
直接粘贴以下代码以进行检查。
describe('Launch testsite', () => {
it('enter details and submit', () => {
cy.fixture('testdata').then(testdata => {
testdata.forEach(data => {
const ModuleID = data.ModuleID;
const LoginName = data.LoginName;
const gameid = data.gameid;
cy.get('#ModuleID').type(ModuleID);
cy.get('#LoginName').type(LoginName);
cy.get('#gameid').type(gameid);
cy.get('#btnSubmit').click();
// in a real test you probably need to do some kind of assertion here
});
});
});
});
。
答案 7 :(得分:0)
正如https://stackoverflow.com/a/6165470/1818089&amp; https://stackoverflow.com/a/6239007/1818089,使用
android:minEms="2"
应该足以实现上述目标。
答案 8 :(得分:-5)
您可以扩展TextView类并覆盖setText()函数。 在此功能中,您可以检查文本长度或单词cound。