`

浅谈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 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" />   
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->  
  <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 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还可以实现更复杂的效果,例如渐变啊等等。
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背景选择器

    ### 浅谈Android的Selector背景选择器 #### 一、引言 在Android开发中,为了提高用户体验,经常需要对控件的外观进行定制化处理,特别是在不同的交互状态下展示不同的视觉效果。`Selector`作为Android中一个非常...

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

    本篇文章将深入探讨Android中的Selector背景选择器的使用方法。 首先,让我们了解Selector的基本结构。Selector是XML文件,通常存储在项目的res/drawable目录下。以下是一个简单的Selector示例: ```xml &lt;selector...

    android selector注入器

    在Android开发中,选择器(Selector)是一种非常重要的机制,用于定义View在不同状态下的显示样式,如按下、聚焦、默认等。`android selector注入器` 提供了一种高效且便捷的方式来管理这些状态选择器,使得开发者...

    Android设置button背景selector和字体selector

    在Button中,我们主要用到两种Selector:一种是background selector(背景选择器),用于改变按钮的背景颜色或图片;另一种是text_color selector(文本颜色选择器),用于改变按钮的文字颜色。 2. **背景选择器...

    Android selector 完整demo

    然后将这个颜色选择器设置到TextView的`android:textColor`属性上。 Demo中的`TestOne`可能包含了一个完整的应用实例,展示了如何创建和使用Selector。在实践中,你可以尝试修改Selector中的状态和对应的图像/颜色...

    基于android背景选择器selector的用法汇总

    在Android开发中,背景选择器(Selector)是一个强大的工具,用于定义不同状态下的视图样式。本文将深入探讨如何创建和使用Selector,以及它在ListView、Button等组件中的应用。 一、创建Selector XML文件 ...

    Android selector状态选择器的使用详解

    Android selector状态选择器的使用详解 Android selector状态选择器是Android应用程序中常用的UI组件,它可以根据不同的状态来改变控件的外观和行为。例如,在一个按钮控件中,selector可以根据按钮的状态(如点击...

    带有背景选择器的GridView

    总的来说,“带有背景选择器的GridView”是一个实用的UI设计,通过合理利用Android的背景选择器特性,我们可以为用户提供更直观的交互反馈,提升应用的用户体验。通过阅读和分析提供的“带有背景选择器的GridView”...

    Android编程中selector背景选择器用法实例分析

    本文实例讲述了Android编程中selector背景选择器用法。分享给大家供大家参考,具体如下: 在Android开发过程中,经常对某一View的背景在不同的状态下,设置不同的背景,增强用户体验。如果按钮,在按下时,背景变化...

    Android selector

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

    ListView Button ImageView 里应用selector选择器切换图片并保持住

    这就是`selector`选择器的作用,它可以帮助我们在不同状态下切换图片,并保持住相应的状态。现在,我们将详细探讨如何在ListView、Button和ImageView中应用selector来实现这一功能。 首先,让我们了解什么是`...

    android-selector-chapek-master

    这个插件主要专注于提升开发者在处理 Android 资源选择器(Selector)时的工作效率,从而简化了 XML 配置文件的编写过程。对于 Android 开发者来说,选择器是一种常用工具,它们用于定义视图在不同状态下的外观,...

    android selector 定制按钮,xml定制,点击变按背景颜色字体颜色等

    在Android开发中,选择器(Selector)是一种非常重要的资源类型,它允许我们为UI组件(如按钮或RadioButton)定义不同的状态,并在用户交互时改变组件的外观。本篇将深入探讨如何通过XML来定制Android的Selector,...

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

    《Android-Ultra-Photo-Selector:打造高效多图片选择体验》 在移动应用开发中,尤其是在社交、分享类应用中,用户对图片选择功能的需求日益增强。为了满足这一需求,开发者们经常需要集成图片选择器组件。Android-...

    Android-ContactSelector联系人选择器选择联系人

    "Android-ContactSelector联系人选择器选择联系人"是这样一个组件,它简化了这一过程,提供了优雅的用户体验。这个项目通常被包含在应用中,用于获取用户的联系人信息,例如在发送消息、添加朋友或者分享内容时。 ...

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

    在描述中提到的"Android文字颜色背景触摸点击反馈色",实质上就是在谈论`selector`如何应用于文字颜色和背景颜色的变化,以响应用户的触摸事件。 在Android的XML资源文件中,我们可以创建一个`selector`来定义不同...

Global site tag (gtag.js) - Google Analytics