点击项目在点击时不会均匀突出显示

时间:2011-03-31 08:52:34

标签: android listview

什么会导致列表视图项的一部分在点按时突出显示?

我正在使用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会导致文本视图填充项目宽度的其余部分,并且整行应突出显示。我需要设置其他东西来控制整个项目的宽度吗?我做错了什么?

编辑:我还有另一个可能相关的问题:当我滚动列表(通常具有白色背景)时,列表项占用的区域在滚动期间变为黑色,然后在滚动停止时再次显示正常。黑色区域与要突出显示的区域大小相同(除了它是所有项目而不仅仅是一个),也就是说在滚动时某些项目的右侧有白色空格。我想在滚动时阻止列表变黑,但也许这是另一个问题。我提到它是因为它让我觉得有些列表项目没有填充他们的父级,但我仍然不确定原因。

1 个答案:

答案 0 :(得分:0)

黑色背景由android:cacheColorHint(XML)或ListView.setCacheColorHint(Java)控制 - 出于性能原因滚动时,它用于在列表下方绘制纯色。

TextView填充父级以来,无论LinearLayout的大小如何,列表项都应全部突出显示。但是你当然应该改变LinearLayout to wrap_content`的高度 - 因为列表的高度(因此列表项的最大大小)是无界的,填充父节点没有多大意义。

TextViewImageView的高度也可能设置为wrap_content。查看这些更改是否可以解决您的问题。