`
苗振忠
  • 浏览: 56721 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

android中selector使用

 
阅读更多
近做listview和button都要改变Android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法。
首先android的selector是在drawable/xxx.xml中配置的。
先看一下listview中的状态:
把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。
drawable/list_item_bg.xml
XML/HTML代码
<?xml version="1.0" encoding="utf-8" ?>       
<selector xmlns:android="http://schemas.android.com/apk/res/android">     
<!-- 默认时的背景图片 -->      
  <item android:drawable="@drawable/pic1" />        
<!-- 没有焦点时的背景图片 -->      
  <item android:state_window_focused="false"       
        android:drawable="@drawable/pic1" />       
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->     <span id="transmark"></span> 
  <item android:state_focused="true" android:state_pressed="true"       
        android:drawable= "@drawable/pic2" />      
<!-- 触摸模式下单击时的背景图片 -->      
  <item android:state_focused="false" android:state_pressed="true"       
        android:drawable="@drawable/pic3" />       
<!--选中时的图片背景  -->      
  <item android:state_selected="true"       
        android:drawable="@drawable/pic4" />       
<!--获得焦点时的图片背景  -->      
  <item android:state_focused="true"       
        android:drawable="@drawable/pic5" />       
</selector>    
使用些xml文件:第一种是在listview中配置android:listSelector="@drawable/list_item_bg
或者在listview的item中添加属性android:background=“@drawable/list_item_bg"即可实现,或者在Java代码中使用:Drawable drawable = getResources().getDrawable(R.drawable.list_item_bg);
ListView.setSelector(drawable);同样的效果。
但是这样会出现列表有时候为黑的情况,需要加上:
android:cacheColorHint="@android:color/transparent"
使其透明。
其次再来看看Button的一些背景效果:

android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
根据这些状态同样可以设置button的selector效果。也可以设置selector改变button中的文字状态。
以下就是配置button中的文字效果:
drawable/button_font.xml
XML/HTML代码
<?xml version="1.0" encoding="utf-8"?>    
<selector xmlns:android="http://schemas.android.com/apk/res/android">    
    <item android:state_selected="true" android:color="#FFF" />    
    <item android:state_focused="true" android:color="#FFF" />    
    <item android:state_pressed="true" android:color="#FFF" />    
    <item android:color="#000" />    
</selector>  
Button还可以实现更复杂的效果,例如渐变啊等等。
XML/HTML代码
drawable/button_color.xml    
<?xml version="1.0" encoding="utf-8"?>    
<selector xmlns:android="http://schemas.android.com/apk/res/android">         /     
        <item android:state_pressed="true">//定义当button 处于pressed 状态时的形态。     
              <shape>     
                     <gradient  android:startColor="#8600ff" />     
                      <stroke   android:width="2dp" android:color="#000000" />     
                       <corners android:radius="5dp" />      
                       <padding android:left="10dp" android:top="10dp"     
                                android:bottom="10dp" android:right="10dp"/>      
                 </shape>     
        </item>     
        <item android:state_focused="true">//定义当button获得 focus时的形态     
                 <shape>     
                       <gradient android:startColor="#eac100"/>     
                        <stroke android:width="2dp" android:color="#333333"  color="#ffffff"/>     
                         <corners android:radius="8dp" />       
                         <padding android:left="10dp" android:top="10dp"     
                                  android:bottom="10dp" android:right="10dp"/>                       
                </shape>     
            </item>    
</selector>    
最后,需要在包含 button的xml文件里添加两项。假如是 main.xml 文件,
我们需要在<Button />里加两项。
android:focusable="true"
android:backgroud="@drawable/button_color"
这样当你使用Button的时候就可以甩掉系统自带的那黄颜色的背景了,实现个性化的背景,配合应用的整体布局非常之有用啊。
分享到:
评论

相关推荐

    android-selector-chapek-master

    在实际使用中,"android-selector-chapek-master" 可以通过 Android Studio 的插件市场进行搜索和安装。安装完成后,开发者可以在编辑 XML 文件时启用该插件的特性,提升开发效率。对于经常处理 Android 选择器的...

    探索Android中selector和shape的结合使用

    例如,我们可以创建两个不同形状的Shape资源,然后在Selector中定义它们对应的状态: ```xml &lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&gt; &lt;item android:state_pressed="true" ...

    Android selector 完整demo

    在实践中,你可以尝试修改Selector中的状态和对应的图像/颜色,观察视图在不同状态下的变化,以加深理解。 总的来说,Android的Selector机制提供了一种灵活的方式,让我们可以根据视图的状态改变其外观。通过熟练...

    Android设置button背景selector和字体selector

    通过以上讲解,你应该了解了如何在Android中使用Selector为Button设置动态背景和字体颜色。熟练掌握这一技巧,可以让你的App界面更具有吸引力和用户体验。实践中,你可以根据实际需求调整状态和颜色,创造出更多个性...

    android selector注入器

    在项目中引入`android selector注入器`,可以通过Gradle依赖方式,将库添加到build.gradle文件中,然后同步项目,即可开始使用。具体依赖的版本和坐标可以在库的官方文档或GitHub页面中找到。 总的来说,`android ...

    浅谈android的selector背景选择器

    #### 三、ListView中使用Selector ##### 3.1 示例代码解析 ```xml &lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&gt; &lt;!-- 默认状态下的背景图片 --&gt; &lt;item android:drawable="@drawable/...

    Android自定义矩形及selector、shape的使用

    自定义矩形通常通过在XML布局文件中使用`&lt;shape&gt;`元素来创建。`&lt;shape&gt;`元素可以定义为矩形、椭圆、线或环等几何形状。在`&lt;shape&gt;`下,我们可以设置`android:shape`属性为`rectangle`,以创建一个矩形。然后,可以...

    Android selector

    在这个"Android selector"主题中,我们将深入探讨如何创建并使用状态选择器来控制按钮(Button)和文字的样式变化。 首先,一个状态选择器通常是一个XML文件,存储在res/drawable目录下。例如,我们可以创建一个名...

    Android绘图机制Selector

    例如,我们可以创建一个通用的边框Selector,然后在其他Selector中通过include标签引用: ```xml &lt;!-- 边框Selector --&gt; &lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&gt; ... &lt;solid ...

    android-selector-intellij-plugin.rar

    Android开发中,选择器(Selector)是不可或缺的一部分,它主要用于定义不同状态下的UI表现。IntelliJ IDEA作为一款强大的Android开发集成环境,提供了丰富的插件支持,以提高开发效率。"android-selector-intellij-...

    Android -- Time-Selector日期选择控件.zip

    要使用这个控件,开发者需要将`Time-Selector`项目导入到自己的Android Studio工程中,作为依赖库进行引用。然后在布局XML文件中添加控件,并在对应的Activity或Fragment中初始化并设置相关属性,如设置初始时间、...

    Android文字颜色背景触摸点击反馈色之selector.zip

    `selectordemo`可能是包含一个示例项目的目录,展示了如何在Android Studio工程中使用`selector`实现文字和背景颜色的触摸反馈。通过分析和运行这个示例,开发者可以更直观地理解`selector`的工作原理,并将其应用到...

    Android selector背景选择器的使用详解

    6. `android:state_enabled="true/false"`:控制组件是否可以响应事件,`true`表示可以,`false`表示不可以,但这个状态通常不在Selector中直接设置,而是在布局文件或代码中控制组件的enabled属性。 使用Selector...

    Android-Ultra-Photo-Selector多图片选择器的使用.zip

    在使用Android-Ultra-Photo-Selector时,开发者需要将项目依赖引入到自己的工程中。通常,这可以通过在build.gradle文件中添加依赖库来完成。之后,开发者可以在代码中调用提供的API,设置选择器的参数,如最大选择...

    Android代码-快速自定义 View 的 Selector

    Android-SpeedyViewSelector This is a change Background Or TextColor Selector support library, with which you can directly specify the Background to be displayed in different states or TextColor Layout...

    Android使用selector修改TextView中字体颜色和背景色的方法

    在字体颜色的Selector中,`android:color`用于设置字体颜色。 接下来,在布局文件中引用这些Selector,例如在一个LinearLayout中添加一个TextView: ```xml android:layout_width="match_parent" android:...

    Android中的Selector的用法详解及实例

    Android中的Selector的用法详解及实例 Android中的Selector是一种强大的工具,可以根据不同的状态来改变控件的背景图片或文字颜色。Selector的用法非常灵活,开发者可以根据需要来设置不同的状态和对应的图片或颜色...

    代码实现drawable的selector效果

    在Android中,可以使用BitmapShader或者NinePatch来实现,但更常见的是使用自定义的ImageView或者使用`CornerFamily`类来实现。例如,我们可以创建一个自定义的ImageView: ```java public class RoundImageView ...

    带圆角的selector

    例如,对于一个`Button`,可以在布局XML文件中使用`android:background="@drawable/your_selector"`来应用自定义的`Selector`。 6. **代码动态设置**:除了在XML中静态设置,我们也可以在Java或Kotlin代码中动态地...

Global site tag (gtag.js) - Google Analytics