我有一个TextView
,我想限制它的字符。实际上,我可以做到这一点,但我正在寻找的是如何在字符串的末尾添加三个点(...)。这一个显示文本已经继续。这是我的XML,但没有点,虽然它限制了我的文字。
<TextView
android:id = "@+id/tvFixture"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_toLeftOf = "@id/ivFixture_Guest"
android:text = "@string/test_06"
android:lines = "1"
android:ems = "3"
android:gravity = "right"
style = "@style/simpletopic.black"
android:ellipsize="end"/>
答案 0 :(得分:569)
<强>推荐使用:强>
在Textview
中再添加一个属性android:singleLine="true"
<强>更新强>
android:ellipsize="end"
android:maxLines="1"
答案 1 :(得分:78)
在布局文件中尝试TextView的这个属性..
android:ellipsize="end"
android:maxLines="1"
答案 2 :(得分:30)
我认为你想要将宽度限制为一行而不是按字符限制它?由于不推荐singleLine
,您可以尝试一起使用以下内容:
android:maxLines="1"
android:scrollHorizontally="true"
android:ellipsize="end"
答案 3 :(得分:11)
例如。你可以用
android:maxLength="13"
这会将texview长度限制为13,但问题是如果你尝试添加3个点(...),它就不会显示它,因为它将是textview长度的一部分。
String userName;
if (data.length() >= 13) {
userName = data.substring(0, 13)+ "...";
} else {
userName = data;
}
textView.setText(userName);
除此之外你必须使用
android:maxLines="1"
答案 4 :(得分:5)
我使用
获得了预期的结果android:maxLines="2"
android:minLines="2"
android:ellipsize="end"
诀窍是将maxLines和minLines设置为相同的值......并且不仅仅是android:lines =&#34; 2&#34;,这样做的技巧。 您也避免使用任何已弃用的属性。
答案 5 :(得分:4)
代码:
TextView your_text_view = (TextView) findViewById(R.id.your_id_textview);
your_text_view.setEllipsize(TextUtils.TruncateAt.END);
的xml:
android:maxLines = "5"
e.g。
在马太福音13章中,门徒们问耶稣为什么用比喻对群众说话。他回答说:“你已经知道天国的奥秘,但对他们来说却没有得到。”
输出: 在马太福音13章中,门徒们问耶稣为什么用比喻对群众说话。他回答说:“你已经知道了......
答案 6 :(得分:4)
您可以限制textview的字符数,并在文本后添加(...)。 假设你只需要显示5个字母,然后你需要显示(...),只需执行以下操作:
String YourString = "abcdefghijk";
if(YourString.length()>5){
YourString = YourString.substring(0,4)+"...";
your_text_view.setText(YourString);
}else{
your_text_view.setText(YourString); //Dont do any change
}
有点破解^ _ ^。虽然它不是一个好的解决方案。但是一项为我工作的工作:D
修改强> 我根据您的限制号码增加了支票。人物。
答案 7 :(得分:4)
我正在使用Horizonal Recyclerview。
1)在CardView中,TextView在使用
android:ellipsize="end"
android:maxLines="1"
检查大胆的TextViews Wyman Group,Jaskolski ......
2)但是当我使用singleLine和ellipsize -
时android:ellipsize="end"
android:singleLine="true"
检查大胆的TextViews Wyman Group,Jaskolski ......
第二种解决方案适合我(使用singleLine)。我也测试了操作系统版本:4.1及以上(直到8.0),它没有任何崩溃工作正常。
答案 8 :(得分:3)
您需要在文本视图的布局中添加以下行
android:maxLines="1"
android:ellipsize="end"
android:singleLine="true"
希望这适合你。
答案 9 :(得分:3)
要使用 android:ellipsize 属性,您必须限制 TextView 的布局宽度,以便< em> text 超出了TextView的范围。
因此, android:layout_width 属性在此处起关键作用,相应地进行设置。
一个示例可以是:
<TextView
android:layout_width="120dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:text="This is a very long text to be displayed"
android:textSize="12sp"
android:maxLines="1"
/>
现在,如果 android:text =&#34中的文本,这是一个非常长的文本要显示&#34; 从TextView中消失使用 android:layout_width =&#34; 120dp&#34; , android:ellipsize =&#34;结束&#34; 将截断文字并在其后放置 ...(3点)。即 这很长...... 将显示在TextView中。
答案 10 :(得分:2)
我认为你给出了文本视图的修复高度和宽度。那么你的解决方案就可以了。
答案 11 :(得分:2)
你可以在xml中写下这行textview
:
android:singleLine="true"
答案 12 :(得分:1)
在文字中添加这两行
android:ellipsize="end"
android:singleLine="true"
答案 13 :(得分:1)
简单的三个点
// In this case i have 3 input fields
var keyObjectFields = ["0", "1", "2"];
const observedValues = keyObjectFields.map(
key => this.credentialsForm.controls[key].valueChanges.pipe(
map(value => +value),
startWith(0)
)
);
const resSurface = combineLatest(observedValues).pipe(
map(values => values.reduce((sum, curr) => sum + curr))
);
resSurface.subscribe(val => { this.surface = val });
答案 14 :(得分:1)
使用
android:singleLine="true"
android:maxLines="1"
app:layout_constrainedWidth="true"
这是我的完整TextView
的样子:
<TextView
android:id="@+id/message_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:maxLines="1"
android:singleLine="true"
android:text="NAME PLACEHOLDER MORE Text"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@id/message_check_sign"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toEndOf="@id/img_chat_contact"
app:layout_constraintTop_toTopOf="@id/img_chat_contact" />
答案 15 :(得分:1)
@AzharShaikh的做法很好。
android:ellipsize="end"
android:maxLines="1"
但是我意识到TextView会被word截断(默认情况下)。显示我们是否有如下文字:
测试long_line_without_any_space_abcdefgh
TextView将显示:
<强> 测试... 强>
我找到了处理这个问题的解决方案,用unicode no-break空格字符替换空格,它使TextView换行而不是单词:
yourString.replace(" ", "\u00A0");
结果:
测试long_line_without_any_space_abc ...
答案 16 :(得分:0)
你可以通过xml
:
<TextView
android:id="@+id/textview"
android:maxLines="1" // or any number of lines you want
android:ellipsize="end"
/>
答案 17 :(得分:0)
<TextView
android:id="@+id/product_description"
android:layout_width="165dp"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:text="Pack of 4 summer printed pajama"
android:textColor="#d2131c"
android:textSize="12sp"
android:maxLines="2"
android:ellipsize="end"/>
答案 18 :(得分:0)
除了
#!/usr/bin/env bash
# Read the array from the output of processing xml
IFS=$'\n' read -r -d '' -a array < <(
xmllint --shell <<<'cat //factor/@name' a.xml |
sed -n 's: name=\"\(.*\)\":\1:p'
)
您应该设置
android:ellipsize="end"
android:maxLines="1"
也称为“匹配约束”,因为android:layout_width="0dp"
值只是将框扩展为适合整个文本,而wrap_content
属性无法发挥作用。
答案 19 :(得分:0)
您只需更改
机器人:layout_width =&#34; WRAP_CONTENT&#34;
使用以下行
机器人:layout_width =&#34; match_parent&#34;
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@+id/visitBox"
android:orientation="vertical" >
<TextView
android:id="@+id/txvrequestTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="Abcdefghighiklmnon"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/orange_color" />
</LinearLayout>
答案 20 :(得分:0)
在android:maxLength="8"
中设置Textview
如果你想设置 yourString >5。然后设置文本视图长度 5+3(对于三点)
if (yourString.length()>5) //
{
textview.setText(yourString.substring(0,5)+"...");
}
else {
textview.setText(title);
}
答案 21 :(得分:0)
1.设置静态width like 7odp
2.使用android:ellipsize="end"
3.使用android:maxLines="1"
4.使用android:singleLine="true"
<TextView
android:id="@+id/tv_status"
**android:layout_width="70dp"**
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/padding_8"
android:gravity="center|center_horizontal"
android:includeFontPadding="false"
android:textColor="@color/black_2a"
android:textSize="@dimen/text_size_1"
**android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"**
app:layout_constrainedWidth="true"
app:borrowStatusText="@{item.lenders[0].status}"
app:layout_constraintEnd_toStartOf="@id/iv_vector"
app:layout_constraintTop_toTopOf="parent" />