【问题标题】:android textview not wrapping correctlyandroid textview没有正确换行
【发布时间】:2014-10-18 22:47:21
【问题描述】:

我有以下 xml 在 listView 中显示行。我希望 ID 为 rowCreatedAt 的 TextView 能够很好地环绕,但它从不这样做,只显示 1 行。我尝试了其他问题中的大多数解决方案并将它们添加到代码中,但它仍然不起作用。谁能告诉我为什么...?

+我想避免为 textview 设置确切的大小。

++ 换一种说法,为什么当width/height设置为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 android-layout textview


【解决方案1】:
 <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 的宽度也是如此:只需要环绕显示所有文本。
  • 然后修正 textview 的大小,例如 android:layout_width="200dp" 或视情况而定。
  • 是的,它可以工作....不过我不想设置确切的大小。我想这是唯一的方法...?
  • 感谢阿尼尔的帮助!如果没有其他人可以在不设置确切大小的情况下找到解决此问题的方法,我会接受您的回答。
  • 我建议设置最大宽度(android:maxWidth="70dp")而不是宽度,虽然这不是一个完美的解决方案
【解决方案2】:

试试这样:

            <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());

【讨论】:

  • hm...我认为这不能解决问题,但我会尝试。
【解决方案3】:

尝试设置android:ems="10",它将使您的edittext 变得非常宽并包裹其他字符。

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

【讨论】:

  • 你想怎么换行?
  • 这样 textView 中的文本不会被剪切而出现在屏幕上。现在使用我发布的代码,屏幕上只显示前几个字符..
  • 你需要固定textview的高度。
  • 通过设置TextView的高度试试android:layout_height="50dp"
  • 再次,我想避免设置确切的大小。由于需要适应的行数不同,它看起来很难看……还有其他方法吗?
【解决方案4】:

添加以下样式更改以修复宽度问题。以及最初的变化

<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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多