如果 TextView 大于 1 行,如何在它上显示省略号?

发布于 2024-11-16 04:26:27 字数 1183 浏览 4 评论 0原文

我有以下不起作用的布局:

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:id="@+id/experienceLayout" 
    android:background="#ffffff" 
    android:layout_height="match_parent" 
    android:paddingLeft="6dp" 
    android:paddingRight="6dp" 
    android:paddingBottom="6dp" 
    android:paddingTop="6dp">

    <TextView 
        android:layout_weight="1" 
        android:id="@+id/experienceLabel" 
        android:text="Experience" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:textStyle="bold">
    </TextView>

    <TextView 
        android:id="@+id/experienceTextView" 
        android:text="TextView" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:ellipsize="end" 
        android:lines="1" 
        android:maxLines="1" 
        android:singleLine="true" 
        android:fadeScrollbars="false">
    </TextView>

</LinearLayout>

I have the following Layout which does not work:

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:id="@+id/experienceLayout" 
    android:background="#ffffff" 
    android:layout_height="match_parent" 
    android:paddingLeft="6dp" 
    android:paddingRight="6dp" 
    android:paddingBottom="6dp" 
    android:paddingTop="6dp">

    <TextView 
        android:layout_weight="1" 
        android:id="@+id/experienceLabel" 
        android:text="Experience" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:textStyle="bold">
    </TextView>

    <TextView 
        android:id="@+id/experienceTextView" 
        android:text="TextView" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:ellipsize="end" 
        android:lines="1" 
        android:maxLines="1" 
        android:singleLine="true" 
        android:fadeScrollbars="false">
    </TextView>

</LinearLayout>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

梦里人 2024-11-23 04:26:27

这是一个常见问题。尝试使用以下内容:

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

........................滚动水平是使其发挥作用的“特殊酱汁”。

This is a common problem. Try using the following:

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

.............. the scrollHorizontally is the "special sauce" that makes it work.

初雪 2024-11-23 04:26:27

这也将制作一条带有省略号的单线

 android:singleLine="true"

This will also make a single line with ellipsise

 android:singleLine="true"
冷情 2024-11-23 04:26:27

使用此

android:ellipsize="end"  
android:singleLine="true"

在没有完全了解输出内容的情况下不要使用此

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

当您使用 maxlines = 1 时,它有时会截断大部分字符。

Use this

android:ellipsize="end"  
android:singleLine="true"

Don't use this without fully aware of what output comes

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

When you use maxlines = 1 it will some time truncate most of the characters.

挽梦忆笙歌 2024-11-23 04:26:27

它在多个设备/API 上为我工作的方式以编程方式如下(其中 tv 是您的 TextView):

    if (tv.getLineCount() > 1) {
        int lineEndIndex = tv.getLayout().getLineEnd(0);
        String text = tv.getText().subSequence(0, lineEndIndex - 3) + "\u2026";
        tv.setText(text);
    }

The way it worked for me on multiple devices / APIs was programmatically like this (where tv is your TextView):

    if (tv.getLineCount() > 1) {
        int lineEndIndex = tv.getLayout().getLineEnd(0);
        String text = tv.getText().subSequence(0, lineEndIndex - 3) + "\u2026";
        tv.setText(text);
    }
囚你心 2024-11-23 04:26:27

所以上面的所有答案都满足只出现 1 行然后省略号的要求。但是,如果您希望省略号出现在某些文本行之后,那么您应该使用以下命令:

android:ellipsize="end"
android:maxLines="2"
android:singleLine="false"

这样,省略号将仅出现在 2 行之后。注意:将 singleLine 设置为 false 很重要。

So all the answers above cater to the requirement that only 1 line and then the ellipsis should appear. However if you want the ellipsis to appear after certain lines of text, then you should use the following:

android:ellipsize="end"
android:maxLines="2"
android:singleLine="false"

With this the ellipsis will appear only after 2 lines. Note: Its important to have singleLine as false.

魄砕の薆 2024-11-23 04:26:27

这帮助了我:

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

确保将 TextView width 设置为 Match_Parent

https://github.com/chrisjenx/Calligraphy/issues/43#issuecomment-523701518

This helped me out:

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

Make sure the TextView width is set to Match_Parent

https://github.com/chrisjenx/Calligraphy/issues/43#issuecomment-523701518

骑趴 2024-11-23 04:26:27

android:singleLine 已弃用。就我而言,我必须为 TextView 获取固定高度,并且我使用 android:lines 属性而不是 android:maxLines。我想这可能会帮助那些和我有同样问题的人。

android:ellipsize="end"
android:lines="2"

android:singleLine is deprecated. In my case, I had to get a fixed height for the TextView and I used the android:lines attribute instead of android:maxLines. I thought this might help someone having the same problem as mine.

android:ellipsize="end"
android:lines="2"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文