`

selector

 
阅读更多
1、准备三张图片,并做好9.png





2、在drawable中定义edittext_selector.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="@drawable/edittext_select" />
   <!--disable效果 windows焦点在前时  注意写法-->     
   <item android:state_window_focused="true" android:state_enabled="false"    android:drawable="@drawable/edittext_disable" />
   <!--默认时效果-->
   <item  android:drawable="@drawable/edittext" /> 
</selector>


3、style中定义
<!-- edittext -->
<style name="edittext_style">
<item name="android:background">@drawable/edittext_selector</item>
<item name="android:paddingLeft">5dip</item>
</style>




4、调用
<EditText
    android:id="@+id/field_item_charactor_content"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:singleLine="true" 
    style="@style/edittext_style"
    />
http://blog.sina.com.cn/s/blog_3e333c4a010151dc.html

 

disable效果
android:state_window_focused="true" android:state_enabled="false"

 <!--选中时效果--> 
android:state_focused="true"

 

   

关于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的时候就可以甩掉系统自带的那黄颜色的背景了,实现个性化的背景,配合应用的整体布局非常之有用啊

 

分享到:
评论

相关推荐

    flutter file-selector

    Flutter的file_selector插件可以帮助开发者在移动应用中方便地选择文件。 要使用file_selector插件,首先需要将插件的依赖项添加到pubspec.yaml文件中,并运行flutter pub get命令获取插件的最新版本。 在插件使用...

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

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

    Android设置button背景selector和字体selector

    为了实现美观且交互丰富的按钮,我们可以使用Selector来定义按钮在不同状态下的背景和字体颜色。Selector是Android中的一种状态列表资源,它可以为控件在不同状态(如按下、默认、聚焦等)下显示不同的效果。 标题...

    Java NIO——Selector机制解析三(源码分析)

    本文将深入探讨Java NIO中的Selector机制,并通过源码分析来理解其实现原理。 Selector机制是Java NIO中的核心组件,它允许单线程同时监控多个通道(Channels)的状态变化,例如连接就绪、数据可读或可写等。这种...

    Android selector 完整demo

    在Android开发中,Selector是一种非常重要的资源类型,它主要用于定义视图在不同状态下的外观,如按下、聚焦、默认和选中等。本教程将深入探讨Android中的Selector及其使用方法,通过一个完整的Demo来帮助你理解和...

    android selector注入器

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

    java selector 测试并发

    Java Selector的核心类包括`Selector`、`SelectionKey`和`SelectableChannel`。`Selector`是实际进行选择操作的对象,它可以注册多个`SelectableChannel`(如SocketChannel)。当这些通道准备进行读写、连接或接受...

    RocketMQ自定义selector实现消息通道定向发送和拉取

    本文将深入探讨如何通过自定义Selector实现在RocketMQ中进行消息通道定向的发送和拉取。 在RocketMQ中,Selector是用于过滤和选择消息的关键组件,它允许消费者根据特定的条件从队列中选择要消费的消息。默认的...

    selectorgadget插件.zip

    【标题】:使用SelectorGadget插件进行网页数据抓取 【内容】 在现代的数据分析领域,网络数据已经成为一个不可或缺的资源。R语言作为一种强大的统计分析工具,也提供了丰富的库来帮助用户从网页中提取数据。其中...

    Selector

    标题中的"Selector"一词在IT领域通常指的是选择器,它是编程语言或样式表中用于选取元素的关键概念。在Web开发中,特别是CSS(层叠样式表)中,选择器用于定位HTML或XML文档中的特定元素,以便应用样式。同时,选择...

    iconFont 实现selector的Demo

    "iconFont 实现selector的Demo" 提供了一种有效的方法,通过使用阿里巴巴的iconfont技术来减少APK的大小,同时还能实现selector状态的动态变化。下面我们将详细探讨这些知识点。 首先,**iconfont** 是一种将图标...

    selenium css selector 定位详解

    ### Selenium CSS Selector定位详解 #### 一、引言 在自动化测试领域,Selenium作为一款强大的工具被广泛应用于Web页面的交互操作与测试。而CSS选择器(CSS Selector)是Selenium进行页面元素定位的一种非常重要的...

    带圆角的selector

    在Android开发中,`Selector`是一种非常重要的图形元素,它被用来定义视图在不同状态下的外观,如正常状态、按下状态、选中状态等。`Selector`通常以XML文件的形式存在于项目的`res/drawable`目录下。在这个场景中,...

    SelectorGadget CSS选择器

    SelectorGadget是一款强大的浏览器插件,专为网页开发者和设计师设计,主要功能是自动化生成CSS选择器。在网页开发过程中,我们经常需要精确地定位HTML元素以便进行样式修改或JavaScript操作,而SelectorGadget则能...

    Contact Selector控件的使用

    《Contact Selector控件在InfoPath中的应用》 在InfoPath设计复杂的表单时,Contact Selector控件是一个不可或缺的工具,它允许用户从SharePoint的人力资源列表或Outlook联系人中选择并插入联系人信息。这个功能...

    代码实现drawable的selector效果

    Selector是Drawable的一种特殊类型,它可以根据控件的状态来改变其显示的图形。在本示例中,我们将探讨如何通过代码实现Drawable的Selector效果,以及如何处理圆形和圆角图片。 首先,Selector通常在XML中定义,但...

    SocketChannel、ServerSocketChannel与Selector的实际案例

    在Java NIO(非阻塞I/O)框架中,SocketChannel、ServerSocketChannel和Selector扮演着关键角色。本文将深入探讨这些组件,并通过一个实际案例——"NServer.java"和"NClient.java"来阐述它们的工作原理和用法。 ...

    BusCreator和BusSelector的简单实验

    在simulink上进行BusCreator和BusSelector的简单实验

    用selector设置button可用和不可用的样式

    本教程将详细介绍如何使用Selector来设置Button在可用和不可用状态下的样式,以提高应用的视觉效果和交互性。 Selector在Android中是一种基于状态的选择器,它可以为不同状态下的View定义不同的样式。它允许开发者...

    java nio Selector的使用-客户端

    Selector是Java NIO中的核心组件之一,它允许单个线程处理多个通道(channels)的读写事件,极大地提高了服务器的并发能力。本篇文章将深入探讨如何在Java NIO中使用Selector处理客户端的I/O请求。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics