zoukankan      html  css  js  c++  java
  • Android笔记之TextView、Button、Imageiew点击selector

    一、Textiew动态改变颜色

    概述:

    • 使用selector为Textiew设置各个状态下的颜色
    • 在代码中改变Textiew的颜色
    • 在代码中setTextColor后如何还原selector中对Textiew的设定

    1、使用selector为Textiew设置各个状态下的颜色

    (1)在res/color文件夹下新建title_color.xml文件

    <item android:color="#0099cc"/>表示文本一般状态下的颜色
    pressed,focused,selected分别表示:按下,控件获得焦点
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true" android:color="#FF0000"/>
        <item android:state_focused="true" android:color="#FF0000"/>
        <item android:state_pressed="true" android:color="#FF0000"/>
        <item android:color="#0099cc"/>
    </selector>

    (2)layout文件下的TextView:

    <TextView
            android:id="@+id/hello"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world"
            android:textColor="@color/title_color" />

    (3)最后,这一步必不可少

        private TextView tv1;
    ...
    tv1=(TextView)findViewById(R.id.hello); tv1.setOnClickListener(null);

    也可以给textview的背景设置选择器,而不是textview本身

        <TextView
            android:id="@+id/notice"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/setting_item_selector"
            android:padding="15dp"
            android:text="消息通知" />

    2、在代码中给Textiew设置颜色

    (1)android自带的颜色:tv1.setTextColor(Color.BLUE);

    (2)/ res/ values/ colors.xml中定义的颜色:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="myGreen">#669966</color>
    </resources>

    代码:

    tv1.setTextColor(getResources().getColor(R.color.title_color));

    xml中设置:

    android:color="@color/myGreen"

    (3)设置在/ res/ color/ title_color.xml下定义的颜色选择器

    tv1.setTextColor(getResources().getColorStateList(R.color.title_color));

     二、Button动态改变样式

    1、 Button的三种状态:(pressed, focused, or niether)

    2、在Button里为android:textColor设置颜色选择器,可以动态Button上的文本颜色,使用和Textiew改变颜色基本相同

    3、设置Button更美观的样式,并动态变化

    (1)4张图片

    button.9.png     button_disable.9.png    button_down.9.png     button_highlighted.9.png  

    (2)新建selector:preview_button_bg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector
      xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/preview_button_highlighted" />
        <item android:state_enabled="true" android:state_selected="true" android:drawable="@drawable/preview_button_highlighted" />
        <item android:state_enabled="true" android:state_pressed="true" android:drawable="@drawable/preview_button_highlighted" />
        <item android:state_enabled="false" android:drawable="@drawable/preview_button_disable" />
        <item android:drawable="@drawable/preview_button" />
    </selector>

    (3) 为Button设置属性:

       android:background="@drawable/preview_button_bg"

    三、Imageiew的selector

    <ImageView
            android:id="@+id/imageview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/tab_home_btn">
        </ImageView>

    selector:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/home_btn_bg" android:state_pressed="true"/>
        <item android:drawable="@drawable/icon_home_sel" android:state_selected="true"/>
        <item android:drawable="@drawable/icon_home_nor"/>
    </selector>

    Done!

  • 相关阅读:
    Java——Math,Set,List,map相关练习
    Java——单例模式、多线程
    Java——I/O入门相关练习代码
    Java——I/O相关练习代码
    Java——序列化与反序列化
    python-selenium-粘贴,删除,复制和悬停
    Typora图床设置(阿里云版,图片自动上传)
    图书管理系统(Java实现,十个数据表,含源码、ER图,超详细报告解释,2020.7.11更新)
    openresty的安装和使用
    工具丨超好用的免费AWR分析工具
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3323251.html
Copyright © 2011-2022 走看看