gpt4 book ai didi

android - 如何为每个 ListView 项设置不同的按下状态颜色?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:30:11 25 4
gpt4 key购买 nike

实际上,我正在开发一个具有多个 ListView 的 android 应用程序。在 ListView 的实现中,我为每个 ListView 项目填充了一个单元格。这是 category_cell.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="60dip"
android:id="@+id/cell_layout"
android:background="@drawable/list_bg">
<RelativeLayout
android:id="@+id/category_cell_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/category_image"
android:layout_centerVertical="true"
android:layout_marginLeft="10dip"
android:layout_height="45dip"
android:layout_width="45dip" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/category_name"
android:text="Category Name"
android:textSize="16dip"
android:typeface="sans"
android:layout_centerVertical="true"
android:layout_marginLeft="70dip"
android:textColor="@color/white" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/arrow_image"
android:background="@drawable/list_arrow"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="10dip" />
</RelativeLayout>
</RelativeLayout>

在此单元格的背景上,放置了一个可绘制的 xml。该 list_bg.xml 具有以下代码:

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

在用项目填充 ListView 时,我想为每个项目的背景 xml 的按下和聚焦状态设置不同的颜色。每个项目都包含一个颜色值,我想在该项目的按下状态下设置该颜色。

StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed},getResources().getDrawable(R.color.translucent_red));
states.addState(new int[] {android.R.attr.state_focused},getResources().getDrawable(R.color.white));
states.addState(new int[] { },getResources().getDrawable(R.color.white));
row.setBackgroundDrawable(states);

我曾尝试实现这个,但这通常接受 drawable 作为 add_state 函数的第二个参数,但我想在那里发布一种颜色......谁能帮帮我???

最佳答案

只需更改 list_bg.xml。这只是您可以设置自己的颜色的示例

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true"><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:angle="90" android:centerColor="#6da23f" android:endColor="#8bc45d" android:startColor="#2f481c" />

<stroke android:width="2dp" android:color="#999999" />

<padding android:bottom="4dp" android:left="3dp" android:right="3dp" android:top="6dp" />

<corners android:radius="10px"/>
</shape></item>
<item><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:angle="90" android:centerColor="#6da23f" android:endColor="#8bc45d" android:startColor="#4c8a39" />

<stroke android:width="1dp" android:color="#FFFFFF" />

<padding android:bottom="4dp" android:left="3dp" android:right="3dp" android:top="6dp" />

<corners android:radius="10px"/>
</shape></item>

关于android - 如何为每个 ListView 项设置不同的按下状态颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6276646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com