在Android中,如何在不禁用onClick颜色的情况下更改listView的背景颜色?

时间:2014-01-22 22:21:04

标签: android listview colors

我有一个listView,我需要提供背景颜色来掩盖活动的背景图像。我宁愿在单元格的基础上执行此操作,以便如果listView没有到达屏幕的底部,背景颜色将显示没有更多列表项目要显示的位置。另外,我应该提一下,我将这个ListView放在ImageViews之间使用:

android:layout_above

android:layout_below

因此,对于较小的屏幕,ListView将在较低的ImageView顶部正确滚动,而不是在其前面或后面。但是对于较大的屏幕,我希望当没有更多的列表项可以显示时,活动的背景图像可见。

我一直在寻找选择器,这可能是我正在寻找的东西,但据我所知,选择器的颜色将显示在listView的背景颜色后面。

这就是我现在正在尝试的。关于如何完成我想要的任何建议?

item.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_enabled="false" android:state_focused="true"
        android:drawable="@drawable/orange" />
  <item android:state_pressed="true"
        android:drawable="@drawable/orange" />
  <item android:state_focused="true"
        android:drawable="@drawable/orange" />
</selector>

下面的activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gray_lines" >

    <ImageView
        android:id="@+id/header"
        android:layout_width="wrap_content"
        android:layout_height="45dp"
        android:scaleType="fitXY"
        android:src="@drawable/logo_header" />

    <!-- Footer aligned to bottom -->
    <ImageView
        android:id="@+id/footer"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:layout_alignParentBottom="true"
        android:scaleType="fitXY"
        android:src="@drawable/orange" />

    <TextView
        android:id="@+id/footerText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="14dp"
        android:onClick="contactPressed"
        android:listSelector="@drawable/item"
        android:drawSelectorOnTop="true"
        android:text="@string/footerText" />

    <ListView
        android:id="@+id/mainMenuList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/header"
        android:layout_above="@id/footer"
        android:divider="#000000"
        android:dividerHeight="0.1dp" />

</RelativeLayout>

这是我的list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gray" >

    <ImageView
        android:id="@+id/img"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="20dp"
        android:layout_alignParentRight="true" />

    <TextView
        android:id="@+id/txt"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_marginTop="17dp"
        android:layout_marginLeft="15dp"
        android:textSize="23sp" />

</RelativeLayout>

如下所示,它会创建正确的颜色,但onClick颜色不会显示。

activity_main.xml

2 个答案:

答案 0 :(得分:1)

如果您只想为列表视图设置静态颜色,请将其添加到xml中的listview元素

<ListView android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background = "@drawable/somebgdrawable"
/>

如果要将drawable添加到单元格

然后在list_item.xml

将背景线添加到布局的根视图

如果你的drawable是选择器,那么添加它 它被认可为@drawable

如果您使用列表活动

getListView().setBackground(Drawable d)

如果您在单元格的基础上执行此操作 - &gt;单元格将被覆盖,但如果列表未到达屏幕底部,则活动将在其后面显示(如果您的列表视图是叠加层)

或者你将在其余部分获得一段时间的屏幕

答案 1 :(得分:0)

我的问题的答案很愚蠢。我有选择器位于textview而不是ListView。对错的地方。

<TextView
        android:id="@+id/footerText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="14dp"
        android:onClick="contactPressed"
        android:text="@string/footerText" />

    <ListView
        android:id="@+id/mainMenuList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/header"
        android:layout_above="@id/footer"
        android:listSelector="@drawable/item"
        android:drawSelectorOnTop="true"
        android:divider="#000000"
        android:dividerHeight="0.1dp" />