您的位置:首页 > 移动开发 > Android开发

Android开发之ListView选中某行后改变其背景色

2017-10-11 16:50 417 查看

Android开发之ListView选中背景色

一、在ListView中手指按下选中某一行时,更换选中那一行的背景色,放开之后恢复原来的背景色

首先在项目的res路径下的drawable文件中创建一个xml文件(如果没有drawable文件自己新建一个),然后在此xml文件中加入如下代码:

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


这两句代码的意思就是:当ListView中的某一行为焦点时,以及你触碰某一行时,改变此行的背景色。

当然,其中的@color后面的代码也是个xml文件,需要在其他地方定义,我是在drawable同级目录下创建了一个叫values的文件夹,然后在此文件夹中创建了colors.xml的文件(正常来说项目新建后会有这个文件),代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="colorlvBtn">#FF9900</color>
<color name="colorlvBtnBehind">#0000</color>
</resources>


这样的好处是方便后期管理。

最后,在你需要改变背景色的ListView中加入:

android:listSelector="@drawable/listview_button"


这个属性(listview_button是你最开始创建的xml文件),然后你就会发现你触摸某一行之后背景色就会改变,放开时背景色又变回来了。

二、按下ListView的某一行之后,改变其背景色,但不恢复到原来的背景色。

要实现这个效果也很简单,你只需在listview的点击事件中:

listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1,int index, long arg3)
{
listview.setSelector(R.color.colorlvBtn);
}
}


核心代码如下:

//设置选中行的背景色
listview.setSelector(R.color.colorlvBtn);


当然,colorlvBtn也是个xml文件,具体创建方法上面已列出。然后,在你点击某一行后,那一行的背景色就会发生改变,且不会再变回原来的背景色。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息