热门标签 | 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);

推荐阅读
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
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社区 版权所有