更改ListView的背景颜色会禁用高亮颜色

时间:2011-01-16 15:11:01

标签: android onclick listactivity

我有一个列表显示在ListActivity中的搜索结果。当我更改ListActivity项的背景颜色时,通过更改第一个LinearLayout(父级)的背景颜色,OnClick突出显示停止工作。为什么这样,当我更改项目的背景颜色时,如何使此突出显示仍然有效?另外,是否可以更改此高光的颜色?感谢。

我的XML是这样的:

<LinearLayout>
<LinearLayout>
 <ImageView>
 <LinearLayout>
  <TextView>
  </TextView>
  <TextView>
  </TextView>
  <TextView>
  </TextView>
 </LinearLayout>
</LinearLayout>

我的活动是这样的:

public class ResultsPage extends ListActivity {

2 个答案:

答案 0 :(得分:5)

正如James所说,如果您在代码中更改背景颜色,当用户在执行时选择ListView中的项目时,它不会突出显示该项目。

您可以使用ListView定义中的属性drawSelectorOnTop =“true”来修复这些行为。例如

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:drawSelectorOnTop="true"
/>

答案 1 :(得分:4)

这是因为Android处理背景的方式。 ListView的默认背景是以XML定义的选择器drawable,它为不同的状态指定不同的背景。当您告诉ListView具有特定的背景图像或颜色时,您已经丢失了选择器,告诉它在不同的状态下要做什么。

请参阅此处的“州名单”部分http://developer.android.com/guide/topics/resources/drawable-resource.html

而且,回答你的第二个问题,是的。如果要更改突出显示背景,请按照上面该页面上的文档中的说明进行操作。您可以将自己的drawable定义为状态列表,没有任何问题。