android - 如果 textView 所在的行太长,则换行一段文本

标签 android xml android-layout layout

我正在寻找满足此要求的最佳方法。如果在其他地方得到了回答,我深表歉意,我找不到解决这个看似简单的问题的方法。

列表中有一行文本看起来像这样:

项目标题 -(5 项)

如果项目的标题变得太长,那么它会换行,这是预期的。但是,它不应包含在“5”和“items”之间。如果需要换行,那么整个“(5 项)”应该换行到下一行。标题的文字应该是椭圆。

我似乎无法找到一种方法来创建适用于此的布局。

最佳答案

This可能有帮助。您可以使用 android:ellipsize 属性定义文本的哪一部分将被截断。

在你的情况下,根据链接的答案,我会使用 android:ellipsize="middle"android:ellipsize="marquee",这使得文本待阅读的幻灯片。

虽然这实际上并不能满足您的要求(自动进入第二行的项目数量),但我认为这可能是更好的解决方案。

查看官方信息here .


我想到的另一件事是使用两个不同的 TextView,一个用于标题,另一个(右对齐?)用于项目计数。我会把 android:ellipsize="end" 给第一个,把 android:layout_width="wrap_content" 给后者。


您还可以在标题下方找到一个计数 TextView,如果有足够的空间,它会附加到标题。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/container"
    android:orientation="vertical" >

    <TextView android:id="@+id/text1"
        android:text="a very very very long title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end" />


    <TextView android:id="@+id/text2"
        android:text="(5 items)"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

在您的代码中,您可以检查宽度:

View container = findViewById(R.id.container);
TextView tv1 = (TextView) findViewById(R.id.text1);
TextView tv2 = (TextView) findViewById(R.id.text2);


String HEADER = tv1.getText();
String COUNT = tv2.getText();

int widthHeader = tv1.getWidth();
int widthCount = tv1.getWidth();
int widthAvailable = container.getWidth();

if (widthAvailable - widthHeader > widthCount) {
    tv1.setText(HEADER + " - " + COUNT);
    tv2.setText("");
}

关于android - 如果 textView 所在的行太长,则换行一段文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27989901/

相关文章:

java - JAXB minOccurs=0。元素存在还是不存在?

android - 判断ListView是否滚动到了上方?

android - 如何拍摄手动设置了包括闪光灯在内的所有设置而又不丢失包含全闪光灯的图像的照片?

android - LeakCanary ContentObserver$传输

android - 使用数据绑定(bind)将数据传递给 <include> 布局

java - 为什么 JAX-WS 导出的对象需要默认构造函数?

android - 对齐圆形磨损设备角中的元素

android - 如何镜像 TextView

Android - ImageView - 多屏幕支持 - 将高度/宽度设置为 dp 或 match_parent/wrap_content?

android - 如何从 Recyclarview Adapter 等 Android 应用程序中的任何位置获取运行时权限