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"/>
#1 楼
不推荐使用:在Textview中添加一个属性
android:singleLine="true"
更新:
android:ellipsize="end"
android:maxLines="1"
#2 楼
以下是我通过尝试将TextView
强制为单行(带有和不带有三个点)的各种选项而学到的东西。 “ 1” <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="one two three four five six seven eight nine ten" />
这只是将文本强制为一行。隐藏任何多余的文本。
相关内容:
android:lines
ellipsize =“ end”
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="end"
android:text="one two three four five six seven eight nine ten" />
这会截断不适合的文本,但会让用户知道该文本已被截断添加省略号(三个点)。
相关内容:
ellipsize =“ start”(... aaabbbccc)
ellipsize =“ middle”(aaa ... ccc)< br android:Ellipsise,选项的含义
<TextView
android:id="@+id/MarqueeText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:text="one two three four five six seven eight nine ten" />
这使文本在TextView中自动滚动。请注意,有时需要在代码中进行设置:
textView.setSelected(true);
android:maxLines="1"
和android:singleLine="true"
应该做的基本相同,并且由于singleLine显然已被弃用,我宁愿不使用它,但是当我将其取出时,选框将不再滚动。但是,将maxLines
取出不会对其造成影响。相关内容:
Android中的字幕文本/>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/horizontalScrollView">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:scrollHorizontally="true"
android:text="one two three four five six seven eight nine ten" />
</HorizontalScrollView>
这允许用户手动滚动以查看整行文本。
评论
但这只是每个单词结尾的省略号。有什么方法可以在very_long_word_without_whitespace ...中间添加...?
– Tobias Reich
17 Mar 8 '17 at 10:45
@TobiasReich,我不知道有一种内置的方式可以完成该任务。您可以使用Paint.measureText自己制作。
– Suragch
17 Mar 8 '17 at 10:49
有时您可能还需要app:layout_constrainedWidth =“ true”
– Dan Crisan
20-2-14在11:03
#3 楼
在布局文件中尝试使用TextView的此属性。.android:ellipsize="end"
android:maxLines="1"
#4 楼
我认为您想将宽度限制为一行而不是按字符限制它?由于不推荐使用singleLine
,因此您可以尝试一起使用以下内容:android:maxLines="1"
android:scrollHorizontally="true"
android:ellipsize="end"
#5 楼
例如。您可以使用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"
评论
您最好使用“ \ u2026”而不是“ ...”
–扎罗
15年1月14日在8:59
这只是一个例子。如果我将字符串放在Strings.xml中,那么绝对可以使用unicode。您要在这里输入任何特定原因吗?
– Nayanesh Gupte
15年1月14日在10:34
不。我个人最近了解到Unicode中存在此字符,因此决定分享此知识;)
–扎罗
15年1月14日在11:09
#6 楼
使用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" />
#7 楼
我正在使用Horizonal Recyclerview。1)在CardView中,使用
时TextView垂直变形
android:ellipsize="end"
android:maxLines="1"
检查Jaskolski粗体TextViews Wyman组...
2)但是当我将singleLine与ellipsize一起使用时-
android:ellipsize="end"
android:singleLine="true"
检查粗体TextViews Wyman组,Jaskolski ...
第二个解决方案对我来说正常工作(使用singleLine)。另外我已经在OS版本:4.1及更高版本(直到8.0)中进行了测试,它可以正常工作而不会崩溃。
#8 楼
代码:TextView your_text_view = (TextView) findViewById(R.id.your_id_textview);
your_text_view.setEllipsize(TextUtils.TruncateAt.END);
xml:
android:maxLines = "5"
例如
在马太福音13 ,门徒问耶稣为什么他用比喻对众人说话。他回答说:“已经知道了天国的奥秘,但是还没有知道。
输出:
门徒在马太福音13章中问耶稣为什么在寓言里对众人说话。他回答说:“这已经赐给你了……
#9 楼
我通过使用android:maxLines="2"
android:minLines="2"
android:ellipsize="end"
获得了预期的结果技巧是将maxLines和minLines设置为相同的值...而不仅仅是android:lines =“ 2”,没办法。
也要避免使用任何过时的属性。
#10 楼
您可以限制textview的字符数,并在文本后添加(...)。假设您只需要显示5个字母,然后再显示(...),只需执行以下操作:
_ ^。虽然它不是一个好的解决方案。但是对我有用的一种工作:D
编辑:字符。
评论
已经在这里解释了
–草帽
2014年1月15日在16:41
#11 楼
您需要在布局中为textview添加以下几行android:maxLines="1"
android:ellipsize="end"
android:singleLine="true"
希望这对您有用。
#12 楼
<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"/>
#13 楼
为了使用android:ellipsize属性,您必须限制TextView的布局宽度,以使文本超出TextView的视野。因此,android:layout_width属性播放一个关键角色,请相应地进行设置。
一个例子可以是:
“这是要显示的很长的文本”从android:layout_width =“ 120dp”的TextView中消失,android:ellipsize =“ end”将截断该文本并在其后放置...(3个点)。即很长...将显示在TextView中。
#14 楼
我认为您可以固定文本视图的高度和宽度。然后您的解决方案将起作用。#15 楼
您可以在使用textview
的xml中编写此行:android:singleLine="true"
#16 楼
@AzharShaikh的方法很好用。显示是否有以下文本:测试long_line_without_any_space_abcdefgh
TextView将显示:
test ...
然后我找到了解决此问题的解决方案,用Unicode不间断空格字符替换空格,它使TextView换行而不是单词: :
测试long_line_without_any_space_abc ...
#17 楼
在您的文本中添加这两行android:ellipsize="end"
android:singleLine="true"
#18 楼
简单的三个点android:layout_width="100dp" <!--your dp or match_parent or 0dp>
android:maxLines="2" <!--count your line>
android:ellipsize="end"
#19 楼
您可以通过xml
来做到这一点:<TextView
android:id="@+id/textview"
android:maxLines="1" // or any number of lines you want
android:ellipsize="end"
/>
评论
如何将3个点@以maxLength =“ 35”属性结尾的任何解决方案?
– Sagar
18-10-8在13:20
#20 楼
除了android:ellipsize="end"
android:maxLines="1"
,还应该设置
android:layout_width="0dp"
也称为“匹配约束”,因为
wrap_content
值只是将框扩展为适合整个文本,并且ellipsize
属性可以没有发挥作用。#21 楼
您只需更改...android:layout_width="wrap_content"
在下面的行中使用此
android:layout_width="match_parent"
......... 。
<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>
评论
已弃用singleLine
–尼克
20-4-10上午17:04
评论
我刚尝试这样做时绝对需要singleLine。即使说不赞成。
– EGHDK
13年8月20日在17:37
android:singleLine =“ true”已弃用,并且有不良副作用。使用android:ellipsize =“ end”和maxLine =“ 1”代替
– Hamidreza Hosseinkhani
2014年12月6日上午8:17
使用singleLine的“不良副作用”是什么?另请参阅:Android中是否已弃用xml属性singleLine?
– Suragch
17年7月24日在5:40
顺便说一句,如果需要的话,android:maxLines可以大于1 :)
–旅游套
17年11月23日在7:35
有谁知道这个消息“ W / StaticLayout:maxLineHeight不应为-1。maxLines:1 lineCount:1“>?
–冷冰
18 Mar 26 '18在16:09