我有一个自定义适配器,我的标题和内容显示最大线和最小线。 但是它仅适用于除最后一个项目之外的所有项目。
前几项
最后一项
正如您所看到的,最后一项没有标题,但不是一个问题。如果长度为零,它是不可见的。
首先,它忽略了甚至没有在适配器中设置但在实际的.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更改为透明但没有区别。
答案 0 :(得分:0)
当您使用layout_weight和垂直方向(列表是垂直方向)时,您需要将高度设置为0dp
,以便自动计算。
在您的示例中,您尝试使用 10/15 提供总高度 5/15 的标题和内容。
也许这不是你想要的,因为列表项通常应该占用所需的空间,因此android:layout_height="wrap_content"
绰绰有余,重量应该被移除。