热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

改变android控件颜色

许多应用都需要根据用户的操作来改变图形颜色,文字颜色。最多的应用场景包括,当用户将焦点移动到某一个模块时,高亮那个模块。当用户点击某一个按钮时,改变按钮上文字的颜色和



 
许多应用都需要根据用户的操作来改变图形颜色,文字颜色。最多的应用场景包括,当用户将焦点移动到某一个模块时,高亮那个模块。当用户点击某一个按钮时,改变按钮上文字的颜色和按钮的背景色。
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.xmlres/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);

推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • JS实现一键分享功能
    本文介绍了如何使用JS实现一键分享功能,并提供了2019独角兽企业招聘Python工程师的标准。同时,给出了分享到QQ空间、新浪微博和人人网的链接。 ... [详细]
  • C#多线程解决界面卡死问题的完美解决方案
    当界面需要在程序运行中不断更新数据时,使用多线程可以解决界面卡死的问题。一个主线程创建界面,使用一个子线程执行程序并更新主界面,可以避免卡死现象。本文分享了一个例子,供大家参考。 ... [详细]
author-avatar
诸葛二蛋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有