首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
integer
match
actionscrip
instance
utf-8
cpython
range
ip
regex
string
runtime
metadata
request
buffer
io
keyword
dll
future
dockerfile
filter
loops
client
golang
heatmap
foreach
expression
flutter
web
tree
hash
php7
config
format
require
input
replace
ascii
process
int
express
subset
import
main
vba
testing
callback
list
uri
go
bit
hook
install
triggers
erlang
usb
php
sum
heap
fetch
cookie
window
schema
datetime
dagger
php8
hashset
js
java
uml
random
perl
tags
post
cmd
typescript
audio
rsa
bitmap
copy
当前位置:
开发笔记
>
编程语言
> 正文
改变android控件颜色
作者:诸葛二蛋 | 来源:互联网 | 2023-10-12 15:47
许多应用都需要根据用户的操作来改变图形颜色,文字颜色。最多的应用场景包括,当用户将焦点移动到某一个模块时,高亮那个模块。当用户点击某一个按钮时,改变按钮上文字的颜色和
许多应用都需要根据用户的操作来改变图形颜色,文字颜色。
最多的应用场景包括,当用户将焦点移动到某一个模块时,高亮那个模块。
当用户点击某一个按钮时,改变按钮上文字的颜色和按钮的背景色。
1:根据用户操作改变按钮的背景色(图)
先以改变按钮的背景色为例子。
首先,你应该有按钮的这几种对应效果图。我这有三种
聚焦:btn_focus.9.png
按压:btn_press.9.png
默认:btn.9.png
这三张图都放到drawable中。然后在drawable中创建一个任意名的xml文件比如
res/drawable/blue_orange_btn.xml
---------按压时
android:drawable="@drawable/btn_press" />
---------聚焦时
android:drawable="@drawable/btn_focus" />
---------默认时
android:drawable="@drawable/btn" />
这个排序是有讲究的,因为android在匹配效果的时候是从上往下的,一旦有匹配的就不会再往下匹配了。所以在控制类似checkbox的图形属性时,除了可以用多个android:state来进行精确的控制外,还要注意排序。
android:state_checked="true" android:state_focused="true"详细的checkbox设置我之前的blog写过 就不赘述了。
按照经验和惯例,一般是呈现给用户时间越长的越排在这个xml的底部。
在这个button的layout文件中如下设置
android:id="@+id/begin_btn"
android:layout_
android:text="@string/begin_btn"
android:layout_centerHorizOntal="true"
android:layout_below="@id/diban"
android:layout_marginTop="16dp"
android:background="@drawable/blue_orange_btn"
/>
1.2:动态的改变用户操作背景色组合
根据不同的需求 你还可以在代码中灵活的控制不同的色彩组合。
比如你有两套颜色变化:
res/drawable/blue_orange_btn.xml
res/drawable/blue_white_btn.xml
你可以在代码中按照你的需求动态设置。
if(begin){
begin_btn.
setBackgroundResource(R.drawable.blue_orange_btn);
}else{
begin_btn.
setBackgroundResource(R.drawable.blue_white_btn);
}
如果用的不是button 而是用imageView 你可以用setImageResource(int)方法,具体的看文档吧。
2: 根据用户操作改变文字的颜色。
改变文字颜色的操作方法跟改变按钮或ImageView的理论是一样的。
创建res/color/text_white_blue.xml文件。
android:color="@android:color/white" />
android:color="@android:color/white" />
android:color="@android:color/blue" />
layout中TextView如下
android:id="@+id/call_log"
android:duplicateParentState="true"
android:text="@string/call_log"
android:textColor="@color/text_white_blue"
/>
中间有一个duplicateParentState属性。主要作用是当这个TextView是属于某一个控件的时候,比如属于一个layout。
他会保持跟父控件的用户操作状态一致。
也就是说当这个TextView所属于的layout被用户所按压的时候,这个TextView会同时被至于按压的状态。
这个属性能够极大的简化程序员的工作量,可以让一个主控件和其子控件保持步调一致改变,统一风格。
2.2:在代码中动态的设置用户操作的文字色组合。
本来以为会跟button 和 ImageView一样非常简单就是对应的set方法加上资源文件。
但是其实不是的,字体的颜色如果用setTextColor(R.color.text_blue_white)来设置,会悲剧。
原因我也不是很明白,反正几乎是改变不了。
代码中正确的设置方式应该是
if(begin)
setTextColor(getResources().getColor(R.color.text_white_blue));
else
setTextColor(getResources().getColor(R.color.text_white_red));
By the way:
有时候需要将整个textview中的部分文字改变颜色
简单的办法如下
TextView.append(Html.fromHtml("
"+str+"
"));
当然也有更复杂和更强大的方法,就是通过SpannableString
简单举例如下
SpannableString ss =
new
SpannableString("AAAA.");
//改变0-2号字符的颜色
ss.setSpan(
new
ForegroundColorSpan(Color.RED), 0, 2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
android
focus
xml
文件
range
version
utf-8
select
http
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
foreach
MyBatis多表查询与动态SQL使用
本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ...
[详细]
蜡笔小新 2023-12-12 17:12:51
io
在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ...
[详细]
蜡笔小新 2023-12-12 17:52:50
io
iOS超签签名服务器搭建及其优劣势
本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ...
[详细]
蜡笔小新 2023-12-11 20:23:23
io
kotlin动画实现上下移动、放大缩小、旋转功能
本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ...
[详细]
蜡笔小新 2023-12-14 17:29:08
utf-8
Alink回归预测的不完善问题及期待
本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ...
[详细]
蜡笔小新 2023-12-14 14:25:33
io
XML介绍与使用的概述及标签规则
本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ...
[详细]
蜡笔小新 2023-12-13 17:39:50
io
Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ...
[详细]
蜡笔小新 2023-12-13 13:12:05
io
Android 7自学笔记总结、移动架构视频、安卓面试真题、项目实战源码讲义
本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ...
[详细]
蜡笔小新 2023-12-13 10:06:58
io
Spring源码解密之默认标签的解析方式分析
本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ...
[详细]
蜡笔小新 2023-12-14 17:24:50
web
如何使用Java获取服务器硬件信息和磁盘负载率
本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ...
[详细]
蜡笔小新 2023-12-14 13:56:20
io
VB.NET在线急等问题解决方法,如何统计数据库字段下的数据并显示在文本框里?
本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ...
[详细]
蜡笔小新 2023-12-13 15:15:30
io
Android开发实现的计时器功能示例
本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ...
[详细]
蜡笔小新 2023-12-12 22:51:19
io
基于Socket的多个客户端之间的聊天功能实现方法
本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ...
[详细]
蜡笔小新 2023-12-11 15:55:40
ip
JS实现一键分享功能
本文介绍了如何使用JS实现一键分享功能,并提供了2019独角兽企业招聘Python工程师的标准。同时,给出了分享到QQ空间、新浪微博和人人网的链接。 ...
[详细]
蜡笔小新 2023-12-10 19:55:57
io
C#多线程解决界面卡死问题的完美解决方案
当界面需要在程序运行中不断更新数据时,使用多线程可以解决界面卡死的问题。一个主线程创建界面,使用一个子线程执行程序并更新主界面,可以避免卡死现象。本文分享了一个例子,供大家参考。 ...
[详细]
蜡笔小新 2023-12-10 10:37:32
诸葛二蛋
这个家伙很懒,什么也没留下!
Tags | 热门标签
integer
match
actionscrip
instance
utf-8
cpython
range
ip
regex
string
runtime
metadata
request
buffer
io
keyword
dll
future
dockerfile
filter
loops
client
golang
heatmap
foreach
expression
flutter
web
tree
hash
RankList | 热门文章
1
linux 中mdelay() 与msleep()的区别
2
如何开通腾讯企业邮箱,腾讯企业邮箱登录入口
3
《清平乐》翻译 原文赏析诗人宋毛滂
4
win10系统使用隐藏的小技巧有哪些_win10系统使用隐藏技巧方法教程
5
Spark SQL引发连接异常错误?
6
Maven 快速指南(二)
7
SQL小白,今天俺又OUT了
8
机器学习(一)——基础概念
9
HTML文件路径有哪些类型
10
win7 64位旗舰版解压包解压出来是Ghost文件怎么安?
11
来分期借钱靠谱吗?来分期借钱介绍!
12
org.geotools.feature.FeatureCollection.add()方法的使用及代码示例
13
XShell中文乱码问题解决
14
java多进程和多线程_多进程和多线程的区别是什么?
15
我对公司 APK 做了个瘦身
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有