本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术,本文为大家讲解如何改变Android标准键的颜色。

问:emmby

我想要改变Android标准键的颜色,以便于适应不同客户品牌的需要。比如,为OpenTable应用添加一个"Find a Table"按钮:

目前为止,我发现的最好的方法,就是改变res/drawable/red_button.xml中有关Button的图片属性:

1
2
3
4
5
6
<?xml
version=
"1.0"

encoding=
"utf-8"?>   
<selector
xmlns:android=
"http://schemas.android.com/apk/res/android">
    <item
android:state_pressed=
"true"

android:drawable=
"@drawable/red_button_pressed"

/>
    <item
android:state_focused=
"true"

android:drawable=
"@drawable/red_button_focus"

/>
    <item
android:drawable=
"@drawable/red_button_rest"

/>
</selector>

但这就需要我为每个按钮都创建三种不同的自定义图案,这样操作会变得异常复杂。我只是想适当的改变按钮的颜色,有什么比较简单的方法吗?

答:emmby

(最佳答案)

我觉得,完全可以在一个文件中进行这种操作。可以将如下代码添加在custom_button.xml文件中:然后在button view中设置background="@drawable/custom_button":

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?xml
version=
"1.0"

encoding=
"utf-8"?>
<selector
 
    <item
android:state_pressed=
"true"

>
        <shape>
            <gradient
                android:startColor="@color/yellow1"
                android:endColor="@color/yellow2"
                android:angle="270"

/>
            <stroke
                android:width="3dp"
                android:color="@color/grey05"

/>
            <corners
                android:radius="3dp"

/>
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp"

/>
        </shape>
    </item>
 
    <item
android:state_focused=
"true"

>
        <shape>
            <gradient
                android:endColor="@color/orange4"
                android:startColor="@color/orange5"
                android:angle="270"

/>
            <stroke
                android:width="3dp"
                android:color="@color/grey05"

/>
            <corners
                android:radius="3dp"

/>
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp"

/>
        </shape>
    </item>
 
    <item>       
        <shape>
            <gradient
                android:endColor="@color/blue2"
                android:startColor="@color/blue25"
                android:angle="270"

/>
            <stroke
                android:width="3dp"
                android:color="@color/grey05"

/>
            <corners
                android:radius="3dp"

/>
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp"

/>
        </shape>
    </item>
</selector>

答:Tomasz

以如下代码为例,你可以自己改写代码来设置不同的按钮颜色:

1
button.getBackground().setColorFilter(new

LightingColorFilter(0xFFFFFFFF, 0xFFAA0000));

答:conjugatedirection

Tomasz方法的基础上,你也可以通过编程,使用PorterDuff中的正片叠底(multiply mod)设定整个按钮的色度,这样就可以改变按钮的颜色。如果你的标准按钮是灰色的:

1
button.getBackground().setColorFilter(0xFFFF0000,
PorterDuff.Mode.MULTIPLY);

这样的代码会将它设定成红色,

1
button.getBackground().setColorFilter(0xFF00FF00,
PorterDuff.Mode.MULTIPLY);

而这种代码会将它设为绿色,也就是说,第一个值用来设定hex格式中的颜色。

原文链接:http://stackoverflow.com/questions/1521640/standard-android-button-with-a-different-color

文章选自StackOverFlow社区,鉴于其内容对于开发者有所帮助,现将文章翻译于此,供大家参考及学习。9Tech将每日持续更新,读者可点击StackOverflow(简称:SOF)精选问答汇总,查看全部译文内容。同时,我们也招募志同道合的技术朋友共同翻译,造福大家!报名请发邮件至zhangqi_wj@cyou-inc.com。

如何改变Android标准键的颜色?的更多相关文章

  1. 改变Android按钮背景颜色的高效方法

    本文将介绍一种有效改变Android按钮颜色的方法. 按钮可以在状态改变时改变其颜色(例如按下,禁用,高亮显示).但是,这需要一一说明每个状态.这篇文章将提供你一个根据状态变化轻松改变按钮颜色的方法. ...

  2. 改变Android ProgressBar样式颜色

    地址: http://blog.csdn.net/lvxiangan/article/details/9110121

  3. android textview改变部分文字的颜色和string.xml中文字的替换(转)

    转   :http://blog.csdn.net/ljz2009y/article/details/23878669 一:TextView组件改变部分文字的颜色: TextView textView ...

  4. Android中通过xml改变背景及文字颜色

    原创文章,转载请注明出处,谢谢! 本篇主要介绍Android开发中,通过XML资源文件来设置控件在不同状态下的背景及文字颜色.关于xml改变背景及文字颜色的原理,大家可以去看一下郭霖大神的源码分析文章 ...

  5. 【Android】安装插件 + 改变文字大小、颜色 + 隐藏代码区块的直线

    安装插件 可以在搜寻框里面填入关键字搜寻,具体的插件,网上有很多介绍了 改变文字大小.颜色 隐藏代码区块的直线

  6. Android圆环形颜色选择器:HoloColorPicker

    HoloColorPicker实现圆环形颜色选择器,可以改变颜色饱和度来选择颜色.选择颜色时,可以用手指沿着圆环滑动一个滑块,从而选择颜色. 添加以下XML至你的布局中: ? 1 2 3 4 < ...

  7. 关于Android配色 自适应颜色的实现

    在Android4.4系统中,更加详细地介绍了关于颜色的细节并提供了使用colour的新教程,以使我们的应用更加独一无二.也就是说,作为一个设计师或者开发者,为你的APP做完美的配色已经变成了你的职责 ...

  8. listview改变选中行字体颜色

    [android]listview改变选中行字体颜色 目标:选中item,其字体设置为#3197FF,未选中的,其字体为#FFFFFF 与listvew设置选中行item背景图片一样,使用select ...

  9. 有史来最大改变 Android 5.0十大新特性

    有史来最大改变 Android 5.0十大新特性 2014.10.16 14:51:31 来源:腾讯数码作者:腾讯数码 ( 0 条评论 )   距离Android系统上一次重大更新不到一年的时间,谷歌 ...

随机推荐

  1. elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg

    分析 Elasticsearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计.它很像SQL中的GROUP BY但是功能更强大. 举个例子,让我们找到所有职员中最大 ...

  2. PS制作墙壁上海报卷页图片效果

    1.首先,打开PS,新建合适的画布. 2.为了使背景具有质感,执行滤镜—滤镜库—纹理化,具体参数按你的感觉来. 3.新建画布“图层1”,为了方便观察,填充为灰色画布,ctrl+t适当缩小画布大小,如图 ...

  3. iOS 传感器集锦

    https://www.jianshu.com/p/5fc26af852b6 传感器集锦:指纹识别.运动传感器.加速计.环境光感.距离传感器.磁力计.陀螺仪   效果预览.gif 一.指纹识别 应用: ...

  4. Oracle 表分区(Partition)

    表分区功能能够改善应用程序性能,提高数据库可管理性和可用性,是数据库管理非常关键的技术.数据库通过使用分区提高查询性能,简化日常管理维护工作. 1 分区优点 1) 减少维护工作量,独立管理每个表分区比 ...

  5. php7函数,声明,返回值等新特性介绍

    使用 ... 运算符定义变长参数函数 (PHP 5 >= 5.6.0, PHP 7) 现在可以不依赖 func_get_args(), 使用 ... 运算符 来实现 变长参数函数. functi ...

  6. 从Oracle数据库中查询前几个月数据时需要注意的一些问题

    在最近的一个项目中,有一个需求就是要查询数据库中前几个月的历史数据,但是由于自己考虑不全面造成了程序的bug,现在将这一块好好作一个总结,希望以后不再犯这种很低级的错误,首先贴出查询中用到的一个子函数 ...

  7. zabbix自定义模板——监控TCP连接状态

    TCP十二种连接状态说明 可以使用man netstat查看 LISTEN - 侦听来自远方TCP端口的连接请求: SYN-SENT -在发送连接请求后等待匹配的连接请求: SYN-RECEIVED ...

  8. 二、kubernetes

    一.kubernetes(简称k8s) 集群示意图 Kubernetes工作模式server-client,Kubenetes Master提供集中化管理Minions.部署1台Kubernetes ...

  9. springboot+jpa+mysql+redis+swagger整合步骤

    springboot+jpa+MySQL+swagger框架搭建好之上再整合redis: 在电脑上先安装redis: 一.在pom.xml中引入redis 二.在application.yml里配置r ...

  10. mysql分页查询按某类型置顶 按某类型置尾 再按优先级排序

    近段时间接到一个新需求: 第一优先级:未满的标的顺位高于已满标的顺位.第二优先级:新手标的顺位高于其他标的的顺位. 第三优先级:标的剩余可投金额少的顺位高于标的剩余可投金额多的. 我是直接通过sql语 ...