使用Gradient Drawable点击ListView项目时更改颜色

时间:2013-01-17 07:14:41

标签: java android listview drawable

我可以使用自定义适配器设置listview,显示正确的输出。另一个列表项也有一个渐变样式,请参阅下面的drawable.xml如何在点击其中任何一个时将项目背景更改为其他某个渐变。我可以为每个项目设置不同的渐变。

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">
<gradient 
android:startColor="#FFFAFAFA" 
android:centerColor="#FFFFFFFF" 
android:endColor="#FFFAFAFA" 
android:angle="90"/>
</shape>

我的档案......

activity_main.xml ....主要xml文件

MainActivity.java ....主要活动

Item.java ....项目选择器方法

ItemAdaptor ....自定义适配器

list_item.xml ..... item(textView)样式

2 个答案:

答案 0 :(得分:0)

我在点击

时出现了颜色变化
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
android:background="@drawable/listitem_states" >

with res / values / listitem_states.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_selected="true"
   android:drawable="@color/listitem_active_color" ></item>
<item
    android:state_pressed="true"
   android:drawable="@color/listitem_active_color" ></item>
<item 
    android:drawable="@color/listitem_bg_color" /> 
</selector> 

我猜你可以轻松地将其用于渐变。

答案 1 :(得分:0)

试试这样..

在drawable中添加

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Selector style for listrow -->

    <item
     android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/gradient_bg" />

    <item android:state_pressed="true"
        android:drawable="@drawable/gradient_bg_hover" />

    <item android:state_selected="true"
     android:state_pressed="false"
        android:drawable="@drawable/gradient_bg_hover" />
</selector>

添加布局

<ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:divider="#FFFFFF"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/list_selector" />