什么会导致列表视图项的一部分在点按时突出显示?
我正在使用Android应用,其中用户浏览一系列列表,并且某些列表项无法正确突出显示。列表项左侧有一个图像,后跟文本。如果项目中的文本主要填充行,则整个行在点击时会突出显示。但是,如果文本很短,则在点击时只有部分行突出显示。无论文本的长度如何,我都非常喜欢整行。我的列表项布局如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@+id/zoneIcon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:paddingLeft="5dp">
</ImageView>
<TextView
android:id="@+id/itemtitle"
android:layout_width="fill_parent"
android:textColor="@color/listItemColor"
android:textSize="14sp"
android:layout_gravity="top|left"
android:layout_height="fill_parent"
android:padding="13dp"
android:textStyle="bold">
</TextView>
</LinearLayout>
我认为将文本视图的layout_width设置为fill_parent
会导致文本视图填充项目宽度的其余部分,并且整行应突出显示。我需要设置其他东西来控制整个项目的宽度吗?我做错了什么?
编辑:我还有另一个可能相关的问题:当我滚动列表(通常具有白色背景)时,列表项占用的区域在滚动期间变为黑色,然后在滚动停止时再次显示正常。黑色区域与要突出显示的区域大小相同(除了它是所有项目而不仅仅是一个),也就是说在滚动时某些项目的右侧有白色空格。我想在滚动时阻止列表变黑,但也许这是另一个问题。我提到它是因为它让我觉得有些列表项目没有填充他们的父级,但我仍然不确定原因。
答案 0 :(得分:0)
黑色背景由android:cacheColorHint
(XML)或ListView.setCacheColorHint
(Java)控制 - 出于性能原因滚动时,它用于在列表下方绘制纯色。
自TextView
填充父级以来,无论LinearLayout
的大小如何,列表项都应全部突出显示。但是你当然应该改变LinearLayout to
wrap_content`的高度 - 因为列表的高度(因此列表项的最大大小)是无界的,填充父节点没有多大意义。
TextView
和ImageView
的高度也可能设置为wrap_content
。查看这些更改是否可以解决您的问题。