如何在ListView行中显示长TextView高度?

时间:2011-05-24 15:07:36

标签: java android listview textview android-linearlayout

我有一个如下所示的ListView: enter image description here

注意TextView是如何被elipses切断的。如何确保整个TextView在ListView内部可见?

这是我的行的XML(textview称为bodyTextView):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="horizontal"
      android:padding="4px">
      <ImageView android:id="@+id/avatarImageView"
          android:layout_width="48px"
          android:layout_height="48px"/>
      <LinearLayout
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:orientation="vertical"
          android:paddingLeft="4px">
          <LinearLayout
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:layout_weight="1"
             android:gravity="center_vertical">
              <TextView android:id="@+id/usernameTextView"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_weight="1"
                  android:gravity="left"
                 android:textStyle="bold"
                  android:singleLine="true"
                  android:ellipsize="end"
                  android:textColor="#444444"
                  android:padding="0px"/>

              <TextView android:id="@+id/bodyTextView"
                 android:orientation="vertical"
                 android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:singleLine="false"
                  android:textColor="#666666"
                  android:maxLines="5"
                  android:ellipsize="end"/>
          <TextView android:id="@+id/dateTextView"
                 android:orientation="vertical"
                 android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:singleLine="true"/>
          </LinearLayout>
      </LinearLayout>
  </LinearLayout>

2 个答案:

答案 0 :(得分:1)

设置ellipsize =“none”。另外,请务必指定maxLines足够大。

答案 1 :(得分:0)

实际上,ellipsize =“none”不会影响元素的宽度。

要使元素在LinearLayout中显示其全部内容,您需要将其layout_width或layout_height(以适用者为准)设置为“wrap_content”,然后确保LinearLayout中的其他元素不会占用空间。即使使用此选项,当一行填充周围布局的宽度时,单行文本仍然会进行椭圆化。

你如何确保其他元素玩得很好?确保它们不是设置为fill_ *选项或wrap_content。一个简单的方法来显示几个TextViews,其中一个占用了它所需的所有空间而其他人玩得很好就是:将主要的一个设置为layout_width为“wrap_content”,layout_weight为“0”(这是默认权重,你不需要设置它,然后将其他设置为layout_width为“0dip”,layout_weight为“1”。这将为主布局提供与内容匹配的设置宽度的布局,以及有效宽度为零的其他TextView。然后布局将看到layout_weights并调整其他TextView的大小以占用剩余空间。