我有一个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"/>

当前回答

以下是我通过使用各种选项来迫使TextView变为一行(带和不带三个点)。

android:maxLines=“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: maxLines android:singleLine(注意这个和这个) android:行

椭圆大小=“结束”

<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 =“开始”(…aaabbbccc) ellipsize =“中产”(aaa…ccc) android:省略号,选项的意思

椭圆大小=“选框”

<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 with scrollhorizontal

<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>

这允许用户手动滚动以查看整行文本。

其他回答

通过这种方式,你可以设置视图的最大长度,同时,你将在结尾有点(“num”是dp的数量):

android:maxWidth="{num}dp"
android:ellipsize="end"

弃用:

在你的Textview中添加一个属性android:singleLine="true"

更新:

android:ellipsize="end" 
android:maxLines="1"

代码:

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章,门徒问耶稣为什么用比喻对众人说话。他回答说:“交给你们是要你们知道……

为了使用android:ellipsize属性,你必须限制TextView的布局宽度,这样文本就超出了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="这是一个很长的文本要显示"从TextView与android:layout_width="120dp", android:ellipsize="end"将截断文本和地方…(3点)在它后面。这太长了……将显示在TextView中。

简单的三点

android:layout_width="100dp" <!--your dp or match_parent or 0dp>
android:maxLines="2" <!--count your line>
android:ellipsize="end"