时间:2021-05-20
本文实例讲述了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程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了js获取及修改网页背景色和字体色的方法。分享给大家供大家参考,具体如下:获得网页的背景色和字体颜色,方法如下:思想:通过取得颜色属性值得到的是rg
本文实例讲述了Android编程中TextView字体属性设置方法(大小、字体、下划线、背景色)。分享给大家供大家参考,具体如下:importandroid.c
本文介绍了android开发修改状态栏背景色和图标颜色的示例,分享给大家,具体如下:修改状态栏背景色和图标颜色默认是黑底白字的,现在要改为白底黑字的先看下效果图
一、p标签内直接设置背景颜色复制代码代码如下:背景为黑色p标签内设置背景色为黑色,字体颜色为白色p标签内设置背景色截图通过p标签内设置style设置背景色等CS
1,selector按下修改背景和文本颜色【1】点击改变字体颜色-android:state_pressed(按压状态)【2】selector状态选择器(bg_