Android TextView SingleLine 字段隐藏长文本



我有一个位于屏幕左侧的TextView,它被设置为gravity="right",它被设置为SingleLine ="true"。

如果此视图中的文本太长,我希望它只是从视图的左侧消失。我以为下面的配置可以做到这一点,但实际发生的是长字符串完全消失,大概是向下并在视图之外的某个地方。

如何创建包含单行文本的简单文本视图,即使在发生意外情况时也能保持其布局?甚至是可预测的事情。

<TextView
    android:id="@+id/tempF"
    android:text="@string/tempF"
    android:layout_width="146dp"
    android:layout_height="wrap_content"
    android:textColor="#cccccc"
    android:textStyle="bold"
    android:textSize="92dp"
    android:fontFamily="serif"
    android:gravity="right"
    android:layout_marginTop="60dp"
    android:layout_gravity="top|left"
    android:singleLine="true"
    />

这就是"省略号"的目的 - 截断部分文本以指示其他文本。

在您的情况下,您可能只需要添加以下内容:

android:ellipsize="end"

或者您可能需要更深入:

在 Java 中自动省略字符串

或者看看这个:

安卓椭圆形多行文本视图

扩展类背后的想法是,当文本内容超出提供的空间时,可以自定义 TextView 的行为。例如,您可以通过删除填充等来赋予它"流血"的外观。省略号是一个指示器,通常用于解释"有更多您看不到的文本" - 这是它的外观:

这真的是一个很长的...

(3 个句点是省略号 - 您的文本方向相反,但它仍然应该有效(

使用自定义文本视图,可以更改"..."什么都没有或你想要的任何其他东西(甚至是我做过的图像(。

您还可以对文本进行选框:

文本视图选框不起作用

在 xml 中添加 2 个属性

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

您应该使用 TextView 的 ellipsize 属性。请查看以下内容:

<TextView
    android:id="@+id/tempF"
    android:text="@string/tempF"
    android:layout_width="146dp"
    android:layout_height="wrap_content"
    android:textColor="#cccccc"
    android:textStyle="bold"
    android:textSize="92dp"
    android:fontFamily="serif"
    android:gravity="right"
    android:layout_marginTop="60dp"
    android:layout_gravity="top|left"
    android:singleLine="true"
    android:ellipsize="end"
    />
<TextView
    android:id="@+id/tv_desc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@color/colorGray"
    android:textSize="@dimen/_18dp"
    android:padding="@dimen/_2dp"
    android:singleLine="true"
    android:ellipsize="end"
    android:text="@string/desc" />

因为android:singleLine已被弃用。我们可以使用此行android:maxLines

可以这样做。

android:ellipsize="end"
android:maxLines="1"
<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#000000" />

它有效。

最新更新