本文实例讲述了Android使用selector修改TextView中字体颜色和背景色的方法。分享给大家供大家参考,具体如下:
android中的selector大家都很熟悉了,用它可以很方便的实现,控件在不同的动作中,颜色等值的变化。这里我说一下TextView中的一些应用。
我想大家都知道,Button按钮在源码上看是一种特殊的TextView,所以我们很多时候,按钮全是使用的TextView来完成,只要加一个android:clickable="true"就可以了。
TextView在使用selector时,会有两种情况,一种就是正常的在TextView控件上来判断按下,焦点等动作的判断,另一种则是TextView外层控件的这些动作,然后将动作传回TextView.
一,正常的在TextView控件上来判断按下,焦点等动作的判断
这种相对简单,一般要修改控件的背景色和文字色,我们要用到两个xml文件。代码如下:
tbackground.xml 修改背景
<?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 默认时的背景图片--> <!--<item android:drawable="@color/white" />--> <!-- 没有焦点时的背景图片 --> <item android:state_window_focused="false" android:drawable="@color/white" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@color/btnbackBlue" /> </selector>
这里要说明一点,大家看到了,我把默认时的背景图片(颜色)给注了,这是为什么呢,因为你把这条放在最前面,无论什么时候,它都会最先运行,它运行完了,程序就不会再往下运行了,所以下面写的全都没有了。如果你想设置默认值,请把这行代码,放到最下面。
ttextcolor.xml 修改文字
<?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 没有焦点时的背景图片 --> <item android:state_window_focused="false" android:color="@color/black" /> <item android:state_focused="false" android:state_pressed="true" android:color="@color/white" /> <!-- 默认时的背景图片--> <item android:color="@color/black" /> </selector>
文字的修改我就把默认值,放到了最后,这里也要说一下,背景我们要用android:drawable而文字的颜色要使用android:color,不然会报错,为什么?大家想想。哈哈。。。。
<TextView android:id="@+id/txt_collection_cancel" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:text="取消" android:textColor="@drawable/ttextcolor" android:gravity="center" android:background="@drawable/tbackground" android:clickable="true"/>
二,TextView外层控件的这些动作,然后将动作传回TextView.
这种情况也常出现,我们一般会在外层加一个LinearLayout或是RelativeLayout。而我们会把点击的事件,给这个外层控件。这时候,你要修改的就是外层控件的背景,和TextView控件的文字颜色。这个时候,我们还用上面的方式,你会发现,TextView没有反应,为什么,因为它没有得到事件,这个时候,会用到一个属性就是android:duplicateParentState
它的官方解释是”如果设置此属性,将直接从父容器中获取绘图状态(光标,按下等)。 注意仅仅是获取绘图状态,而没有获取事件,也就是你点一下LinearLayout时Button有被点击的效果,但是不执行点击事件“。看下面的代码:
<RelativeLayout android:id="@+id/rela_collection_add" android:layout_width="fill_parent" android:layout_height="50dp" android:background="@drawable/tbackground" android:clickable="true"> <View android:id="@+id/line_collection_add" android:layout_width="fill_parent" android:layout_height="1dp" android:background="@color/gray" android:layout_gravity="center_vertical" android:layout_alignParentBottom="true" /> <TextView android:id="@+id/txt_collection_add" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="新建收藏夹" android:textColor="@drawable/ttextcolor" android:textSize="@dimen/ActionBar_title_size" android:duplicateParentState="true" android:gravity="center" android:layout_above="@+id/line_collection_add" /> </RelativeLayout>
我们在修改外层控件背景的同时,也在修改 TextView文字的颜色.
希望本文所述对大家Android程序设计有所帮助。
本文向大家介绍Android实现修改状态栏背景、字体和图标颜色的方法,包括了Android实现修改状态栏背景、字体和图标颜色的方法的使用技巧和注意事项,需要的朋友参考一下 前言: Android开发,对于状态栏的修改,实在是不友好,没什么api可以用,不像ios那么方便.但是ui又喜欢只搞ios一套.没办法.各种翻源码,写反射.真的蛋疼. 需求场景: 当toolbar及状态栏需要为白色或浅色时(如
问题内容: 我希望能够根据当前路径更改背景色。 我尝试通过每当路径更改时检查$ location.path()来执行此操作,然后使用伪指令更改背景色,但这似乎很简单(并且不起作用)。 什么是实现这一目标的更分离的方法? 如果有人想看,这是我写的代码。 问题答案: 为了消除样式,数据,内容等方面的动态变化,通常很实际的做法是创建另一个包含接口(自定义提供程序)的角度模块,该接口可让您在配置级别之前和
我在设计JScrollPane的样式时遇到问题。我只想能够更改拇指和背景的颜色(同时删除增加/减少按钮)。到目前为止,我尝试了以下方法: 而且 有了上面所有的代码,我得到了一个白色背景的暗拇指。有趣的是,如果我删除setUI函数,我会得到一个默认的拇指,背景变暗... 有什么想法吗? 谢啦 解决****** 上面的configureScrollBarColors函数可以通过以下方式使用: 把拇指的
本文向大家介绍element-ui tooltip修改背景颜色和箭头颜色的实现,包括了element-ui tooltip修改背景颜色和箭头颜色的实现的使用技巧和注意事项,需要的朋友参考一下 本文介绍了element-ui tooltip修改背景颜色和箭头颜色的实现,分享给大家,具体如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍JS修改iframe页面背景颜色的方法,包括了JS修改iframe页面背景颜色的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS修改iframe页面背景颜色的方法。分享给大家供大家参考。具体如下: 下面的代码演示了如何在网页里通过JS代码修改嵌入的iframe的网页背景颜色 希望本文所述对大家的javascript程序设计有所帮助。
问题内容: 是否有CSS属性可根据以下图片反转相关内容? 问题答案: 有一个CSS属性叫做mix-blend-mode,但是IE不支持。我建议使用伪元素。如果您想支持IE6和IE7,则还可以使用两个DIV代替伪元素。