zoukankan      html  css  js  c++  java
  • 如何为按钮设置一组不同状态的颜色

      之前在开发的过程中遇到一个问题:如何为一个按钮或者view对象在被点击或者不可点击或者被按下的时候显示不同的状态,后来了解到有一个资源类型:<selector>,可以用来定义基于控件的状态而显示不同的颜色或者图案。
      比如说我们可以定义一个Button,当它被禁用的时候显示为灰色,被启用的时候为绿色,当被按下的时候显示为黄色。当有了selector元素之后我们就可以在其下面定义多个itme子元素来规定我们的属性,我么可以看一下下面表的一些属性:

    颜色状态列表<item>元素的属性
    属性 解释
    color 指定下列各式之一的一个十六进制颜色必须属性:#RGB,#ARGB,#RRGGBB,#ARRGGBB。
    state_enabled 布尔类型,决定该对象是否能接收触碰或点击事件,值为:true或者false。
    state_checked 布尔类型,决定该对象是否被选中,值为:true或者false。
    state_checkable 布尔类型,决定该对象是否可以被选中,值为:true或者false。
    state_selected 布尔类型,决定该对象是否选择,值为:true或者false。
    state_focused 布尔类型,决定该对象是否获取焦点,值为:true或者false。
    state_pressed 布尔类型,决定该对象是否按下,值为:true或者false。

      

      那要如何使用呢?接下来举一个例子:

      我们在res/color下新建一个xml文件,命名为textcolor.xml,内容应为为这样的:

     1 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     2     
     3     <item 
     4         android:state_enabled="true"
     5         android:color="#FF00FF"
     6         />
     7     
     8     <item 
     9         android:state_pressed="true"
    10         android:color="00FF00"
    11         />
    12     <item 
    13         android:state_focused="true"
    14         android:color="#FF0000"
    15         />
    16     <item 
    17         android:color="#000000"
    18         />
    19     
    20 </selector>

      接着我们在main_activity.xml中定义一个Button,Button可以这样写:

     <Button 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="HelloWorld"
            android:textColor="@color/textcolor"
            />

      这样就可以将Button应用为我们所需要的属性了。其实是挺简单的,不过我们一开始如果没有学到selector的时候就会在java文件中写大量的无用代码,这也是可以减轻代码量的一个小技巧。

    BOB

    持续更新中……

  • 相关阅读:
    flutter,跟着官网一步一步创建第一个flutter应用
    meta标签的用处详解
    js array 对象
    javascript异步编程,promise概念
    jquery常用
    《java编程思想》:异常丢失
    Nginx均衡负载配置
    Maven将jar包安装到本地仓库
    《java编程思想》读后笔记:二,吸血鬼数字
    基于jQuery Ajax实现无刷新文件上传
  • 原文地址:https://www.cnblogs.com/ghylzwsb/p/5768039.html
Copyright © 2011-2022 走看看