Android:ListView最后一项很奇怪

时间:2014-08-24 14:07:21

标签: android android-listview selecteditem

我有一个自定义适配器,我的标题和内容显示最大线和最小线。 但是它仅适用于除最后一个项目之外的所有项目。

前几项 Android ListView Last Item

最后一项 Android ListView Last Item 2

正如您所看到的,最后一项没有标题,但是一个问题。如果长度为零,它是不可见的。

首先,它忽略了甚至没有在适配器中设置但在实际的.xml中设置的文本颜色。如果我按下该项目,它将获得正确的颜色,直到长按操作开始。加上它忽略maxLines / minLines。

最后一项与标题为“另一种培根”的内容相同。

 .... getView() in BaseAdapter

            hint.setMaxLines( 3 );

            if ( item.getTitle().length() < 1 ) {

                hint.setSingleLine( false );
                hint.setMinLines( !cards_ui ? 3 : 1 );

            } else {

                hint.setSingleLine( true );
                hint.setMinLines( 1 );
                hint.setMaxLines( cards_ui ? 3 : 1 );
            }

来自项目xml

<LinearLayout ... >

     <TextView
          android:id="@+id/list_item_title"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_weight="5"
          android:paddingLeft="6dp"
          android:paddingRight="6dp"
          android:textSize="20sp"
          android:textColor="@color/black_lite"
          android:textColorHint="@color/black_lite"
          android:singleLine="true"
          android:maxLines="1"
          android:maxEms="10"
          android:ellipsize="end"
          android:hint=""
          android:text=""
          android:textIsSelectable="false" />

     <TextView
          android:id="@+id/list_item_content"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_weight="10"
          android:paddingLeft="6dp"
          android:paddingRight="6dp"
          android:paddingBottom="10dp"
          android:text=""
          android:textSize="15sp"
          android:textColor="@color/black_light"
          android:textColorHint="@color/black_light"
          android:maxLines="3"
          android:ellipsize="end"
          android:textIsSelectable="false" />

</LinearLayout>

的ListView

    <ListView
            android:id="@+id/list_listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:listSelector="@drawable/listview_selector"
            android:dividerHeight="1dp"
            android:clipToPadding="false"
            android:columnWidth="120dp"
            android:drawSelectorOnTop="true"
            android:horizontalSpacing="@dimen/grid_spacing"
            android:numColumns="auto_fit"
            android:padding="@dimen/grid_spacing"
            android:verticalSpacing="@dimen/grid_spacing"
            />

那么,为什么我的最后一个项目会变成另一种'风格'呢?我的代码中没有选择任何项目,我尝试将list_selector更改为透明但没有区别。

1 个答案:

答案 0 :(得分:0)

当您使用layout_weight和垂直方向(列表是垂直方向)时,您需要将高度设置为0dp,以便自动计算。

在您的示例中,您尝试使用 10/15 提供总高度 5/15 的标题和内容。

也许这不是你想要的,因为列表项通常应该占用所需的空间,因此android:layout_height="wrap_content"绰绰有余,重量应该被移除。