我有一个位于屏幕左侧的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" />
它有效。