Android中的Selector的用法

Android中的Selector主要是用来改变ListView和Button控件的默认背景。其使用方法可以按一下步骤来设计:

(以在mylist_view.xml为例)

1.创建mylist_view.xml文件

首先在res目录下新建drawable文件夹,再在新建的drawable文件夹中新建mylist_view.xml,其目录结构为:res/drawable/mylist_view.xml。

2.根据具体需求编辑mylist_view.xml文件

新建mylist_view.xml文件后,在没有添加任何属性时其内部代码结构为:

1<?xml version="1.0" encoding="utf-8" ?>    2<selector xmlns:android="http://schemas.android.com/apk/res/android">  3  4</selector>

下面就可以根据项目需求,在其内部定义为自己想要的样式了,主要属性如下:

1<?xml version="1.0" encoding="utf-8" ?>    2<selector xmlns:android="http://schemas.android.com/apk/res/android">  3<!-- 默认时的背景图片-->   4  <item android:drawable="@drawable/pic1" />     5<!-- 没有焦点时的背景图片 -->   6  <item android:state_window_focused="false"    7        android:drawable="@drawable/pic1" />    8<!-- 非触摸模式下获得焦点并单击时的背景图片 -->   9  <item android:state_focused="true" android:state_pressed="true"   android:drawable= "@drawable/pic2" />  10<!-- 触摸模式下单击时的背景图片-->   11<item android:state_focused="false" android:state_pressed="true"   android:drawable="@drawable/pic3" />   12<!--选中时的图片背景-->   13  <item android:state_selected="true"   android:drawable="@drawable/pic4" />    14<!--获得焦点时的图片背景-->   15  <item android:state_focused="true"   android:drawable="@drawable/pic5" />    16</selector>

3.引用mylist_view.xml文件

三种方法可以来引用刚才创建的文件:

(1)在ListView中添加如下属性代码

[html] view plaincopyprint?

android:listSelector="@drawable/mylist_view"

(2)在ListView的item界面中添加如下属性代码

[html] view plaincopyprint?

android:background="@drawable/mylist_view"

(3)利用JAVA代码直接编写

[java] view plaincopyprint?

1Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);  2listView.setSelector(drawable);

为了防止列表拉黑的情况发生,需要在ListView中添加以下的属性代码

[html] view plaincopyprint?

android:cacheColorHint="@android:color/transparent"

属性介绍:

android:state_selected选中

android:state_focused获得焦点

android:state_pressed点击

android:state_enabled设置是否响应事件,指所有事件

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

前端性能优化 - 雅虎军规

无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的

Android So动态加载 优雅实现与原理分析

背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我