Android使用selector修改TextView中字体颜色和背景色的方法

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • Android编程之selector下设置背景属性值的方法

    本文实例讲述了Android编程之selector下设置背景属性值的方法.分享给大家供大家参考,具体如下: 在res/drawable文件夹新增一个文件,此文件设置了图片的触发状态,你可以设置 state_pressed,state_checked,state_pressed,state_selected,state_focused,state_enabled 等几个状态: android:state_pressed Boolean. "true" if this item shoul

  • Android中Listview点击item不变颜色及设置listselector 无效的解决方案

    这是同一个问题,Listview中点击item是会变颜色的,因为listview设置了默认的listselector,有一个默认的颜色,同理如果点击没颜色变化我们怎么设置listselector也不会变颜色的. 但是在我们的开发过程中,我们可能会碰到这样的问题listview点击不变颜色,总结了一下大概有这几种原因: 1.item的layout设置background颜色值,去掉背景颜色即可 2.listview中listselector属性的效果被覆盖了,比如列表的Item为一个占满单元格的I

  • Android selector背景选择器的使用详解

    在开发应用中,很多情况下要设计listview或button控件的背景,下面总结一下android的selector的用法:1.在drawable中配置Android的selector.将如下的XML文件保存成你自己命名的.xml文件(比如item_bg.xml),并将该文件放置在drawable文件中,在系统使用时根据ListView中的列表项的状态来使用相应的背景图片. 复制代码 代码如下: <?xml version="1.0" encoding="utf-8&q

  • 基于android背景选择器selector的用法汇总

    一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <!-- 没有焦点时的背景图片 -->    <item android:dr

  • Android selector的实例详解

    Android  selector的详解 前言: StateListDrawable 是一种通过XML文件来定义的drawable,使用几个不同的图片来呈现同一个图形,通过object的状态来实现切换.例如,一个Button有几个不同的状态(按压,获取焦点等等),这种情况下,通过使用 state list drawable,你就可以实现在不同的状态下使用不同的背景图片. 你可以在一个XML文件中描述state list.通过在根节点selector下定义一个item元素来添加每个图形.每一各it

  • Android Selector和Shape的使用方法

    1.背景选择器(位于res/drawable/,使用方法:android:background="@drawable/XXX") 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <selectorxmlns:android="http://schemas.android.com/apk/res/android"> <itemandroid:dra

  • Android中的Shape和Selector的结合使用实例

    一:在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,首先我们了解一下Shape下面有哪些标签,都代表什么意思: (1).solid:填充 android:color指定填充的颜色 (2).gradient:渐变 android:startColor和android:endColor分别为起始和结束颜色, android:angle是渐变角度,必须为45的整数倍. 另外渐变默认的模式为android:type="linear",即线性渐变, 可以指定渐

  • Android使用selector修改TextView中字体颜色和背景色的方法

    本文实例讲述了Android使用selector修改TextView中字体颜色和背景色的方法.分享给大家供大家参考,具体如下: android中的selector大家都很熟悉了,用它可以很方便的实现,控件在不同的动作中,颜色等值的变化.这里我说一下TextView中的一些应用. 我想大家都知道,Button按钮在源码上看是一种特殊的TextView,所以我们很多时候,按钮全是使用的TextView来完成,只要加一个android:clickable="true"就可以了. TextVi

  • Android编程开发实现TextView显示表情图像和文字的方法

    本文实例讲述了Android编程开发实现TextView显示表情图像和文字的方法.分享给大家供大家参考,具体如下: 从这个案例中我们可以学到当我们美化图片美化界面的时候可以在某一区域输入图片和文字混搭信息,第三张图片按比例缩小,第四张图像有超链接 布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andro

  • Android编程开发之TextView单击链接弹出Activity的方法

    本文实例讲述了Android编程开发之TextView单击链接弹出Activity的方法.分享给大家供大家参考,具体如下: 话不多说直接上码: 核心源码: package com.example.textview4; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.SpannableString; import android.tex

  • Android实现九宫格(GridView中各项平分空间)的方法

    本文实例讲述了Android实现九宫格(GridView中各项平分空间)的方法.分享给大家供大家参考.具体如下: 项目需要做一个九宫格(也不一定是9的,4宫格.16宫格.4x3宫格...),封了 一个宫格,它能够根据为它分配的空间来自动的调节宫中各项的尺寸. 从TableLayout集成来的,因此如果你直接在设计器上使用该封装的话需要把它自动加进去的那几个TableRow删除一下. 类名为AdvancedGridView,代码如下: import android.content.Context;

  • Android编程实现在一个程序中启动另一个程序的方法

    本文实例讲述了Android编程实现在一个程序中启动另一个程序的方法.分享给大家供大家参考,具体如下: Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用. 一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动: Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEG

  • C#读取系统字体颜色与大小的方法

    本文实例讲述了C#读取系统字体颜色与大小的方法.分享给大家供大家参考.具体分析如下: 首先,说到字体.颜色,我们应该想到System.Drawing命名空间 先说说获取系统字体的方法: 在System.Drawing命名空间下有个FontFamily类,其下有个静态属性:Families(返回的是一个 FontFamily对象数组) 注:System.Drawsing.FontFamily是一个密封类. 而在System.Drawing.Text命名空间下有个InstalledFontColle

  • Android开发笔记 改变字体颜色的三种方法

    1.在layout文件下的配置xml文件中直接设置字体颜色,通过添加android:textcolor="#FFFFFF"来变化颜色 但这样的效果只能让字体千篇一律的显示一种颜色 2.在activity中通过TextView tv=new TextView(this):实例化一个textview,通过setContentView(tv);将其加载到当前activity,设置要显示的内容String str="想要显示的内容":通过以下代码可以实现部分文本字体的改变,

  • python在linux中输出带颜色的文字的方法

    在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中.而一般的应用服务器,第三方库,甚至服务器的一些通告也会在终端中显示,这样就搅乱了我们想要的信息. 我们可以通过对有用的信息设置不同颜色来达到醒目的效果,因为我平时都是在linux下开发,而linux终端中的颜色是用转义序列控制的,转义序列是以ESC开头,可以用\033完成相同的工作(ESC的ASCII码用十进制表示就是27,等于用八进制表示的33). 书写格式,和相关说明如下: 复制代码

  • Android 中TextView中跑马灯效果的实现方法

     条件: 1.android:ellipsize="marquee" 2.TextView必须单行显示,即内容必须超出TextView大小 3.TextView要获得焦点才能滚动 mTVText.setText("超过文本长度的数据"); mTVText.setSingleLine(true);设置单行显示 mTVText.setEllipsize(TruncateAt.MARQUEE);设置跑马灯显示效果 TextView.setHorizontallyScrol

  • 修改WordPress中文章编辑器的样式的方法详解

    自定义文章编辑器的样式 每一个 WordPress 主题的文章样式都是不一样的,但是在使用后台的可视化编辑器编辑文章的时候,样式却都是一致的. 但是 WordPress 提供了一个在文章可视化编辑器中自定义样式的功能,利用这个功能可以在 WordPress 可视化编辑器里自定义 CSS 样式. 把可视化编辑器的样式设置成和前端一样,可以方便用户直接预览出文章显示在前端的结果,不用刷新反复的调试文章排版样式. 在文章编辑器添加一个自定义的 CSS 样式表只需要使用 add_editor_style

随机推荐