安卓TextView自动换行不正确。

4
我有以下xml以在listView中显示行。我希望具有id rowCreatedAt的TextView能够很好地自动换行,但它始终只显示1行。我尝试了其他问题中的大多数解决方案并将它们添加到代码中,但仍然不起作用。有谁能告诉我为什么...?+ 我想避免设置textview的确切大小。++换句话说,当将宽度/高度设置为fill_parent时,为什么rowCreatedAt textView不会换行,而其他textViews则可以很好地换行?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="5dp"
    android:layout_marginBottom="5dp" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/rowUserImage"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/twitter_icon" 
            android:layout_margin="5dp"/>

        <TextView
            android:id="@+id/rowCreatedAt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="10dp"
            android:textColor="#ff696969"
            android:ellipsize="none"
            android:singleLine="false"
            android:scrollHorizontally="false"
            android:layout_weight="1"
            android:maxLines="100"
            android:text="aaaaaaaaaaaaaaabbbbbbbbbbbbbb" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/rowUserName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:text="username"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/rowText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:text="status text" />
    </LinearLayout>

</LinearLayout>

可能是Android TextView文本未被换行的重复问题。 - mayo
4个回答

3
 <TextView
            android:id="@+id/rowCreatedAt"
             android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="10dp"
            android:textColor="#ff696969"
            android:ellipsize="none"
            android:singleLine="false"
            android:scrollHorizontally="false"
            android:layout_weight="1"
            android:maxLines="100"
            android:text="aaaaaaaaaaaaaaabbbbbbbbbbbbbb" />

android:layout_width="fill_parent" 更改为 android:layout_width="200dp"

使用“wrap_content”会使得父级布局变宽。我想要的是让父级布局的宽度保持不变,以及这个textView的宽度也不变:只需要文字环绕显示所有内容。 - amor0624
然后调整TextView的大小,例如android:layout_width="200dp"或适当的大小。 - Looking Forward
是的,然后它就可以工作了...我不想设置确切的大小,但我猜这是唯一的方法...? - amor0624
谢谢你的帮助,Anil!如果没有其他人能够找到一种不需要设置确切大小就能解决这个问题的方法,我会接受你的答案。 - amor0624
建议将宽度设置为最大宽度(android:maxWidth="70dp"),虽然这不是完美的解决方案。 - Shaz
它对我的情况有效。但是为什么呢?父元素有200dp的宽度,所以设置匹配父元素为200dp。但是它不起作用。但是当给定值为200dp时,它可以正常工作。 - Jakub S.

1
尝试像这样:

尝试这样:

            <TextView
            android:id="@+id/Lesson_Description"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:minLines="4"
            android:maxLines="6"
            android:gravity="right|center"
            android:background="@drawable/filed_shape_corner"
            android:inputType="textMultiLine" />

然后在代码中做类似以下的操作:
mLessonDescription = (TextView) rootView
                .findViewById(R.id.Lesson_Description);


        mLessonDescription.setMovementMethod(new ScrollingMovementMethod());

嗯...我不认为这会解决问题,但我会尝试。 - amor0624

0
请在初始更改的基础上添加以下样式更改以解决宽度问题。
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:singleLine">false</item>
<item name="android:maxLines">100</item>
<item name="android:width">0dp</item>
<item name="android:layout_weight">1</item>

0

尝试设置android:ems="10",它会使您的编辑框变得更宽,并自动换行其他字符。

或者

如果您不想固定高度,应该使用android:ellipsize="marquee"


所以文本视图中的文本可以在屏幕上显示而不被截断。现在,使用我发布的代码,只有前几个字符出现在屏幕上... - amor0624
你需要调整TextView的高度。 - GrIsHu
尝试通过设置TextView的高度android:layout_height="50dp"来测试。 - GrIsHu
再次强调,我希望避免设置确切的大小。因为需要适应的行数不同,这会使其外观变得丑陋...是否还有其他方法? - amor0624
其他文本将进行调整,因为它没有大量文本。如果您想显示大量文本,则必须将其包装或固定高度或宽度以显示完整文本。 - GrIsHu
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接