android 高亮显示一个技巧

本文介绍如何在Android应用中自定义视图的状态背景,包括正常、聚焦、按下等状态的图片替换技巧,并分享了使用透明背景作为默认状态背景的有效实践。

在android应用程序里,view被focus,或者press,touch背景都会有高亮显示背景,其实这就是图片替换而已,这个可以到sdk里面找到android-sdk-windows\platforms\android-8\data\res\drawable

btn_default.xml文件里面:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_window_focused="false" android:state_enabled="true"
        android:drawable="@drawable/btn_default_normal" />
    <item android:state_window_focused="false" android:state_enabled="false"
        android:drawable="@drawable/btn_default_normal_disable" />
    <item android:state_pressed="true"
        android:drawable="@drawable/btn_default_pressed" />
    <item android:state_focused="true" android:state_enabled="true"
        android:drawable="@drawable/btn_default_selected" />
    <item android:state_enabled="true"
        android:drawable="@drawable/btn_default_normal" />
    <item android:state_focused="true"
        android:drawable="@drawable/btn_default_normal_disable_focused" />
    <item
         android:drawable="@drawable/btn_default_normal_disable" />
</selector>

我们应用程序很多高亮显示,normal背景都是可以替换的,这个目录下有很多这样的xml文件,button,checkbox,EditText等等图片都可以替换。

有一次,我参与一个项目,normal背景是没有的,需求只给了高亮背景,这个时候我在xml文件填写@null,或者没有写<item android:state_enabled="true"
        android:drawable="@drawable/btn_default_normal" />这个item,结果编译不过去。

一时间还真没有办法,产品需求那边又不好反驳,毕竟自己还嫩,只能哑巴吃黄连。

后来有一个ListView要去掉选中背景高亮显示,我到网上找了下资料,可以用背景透明来做:

android:drawable="@android:color/transparent"

后来我灵机一动,克不可以也用背景透明来代替normal背景,于是说试就试,结果编译过了,能运行,ok

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    
    <item android:state_window_focused="false" android:state_enabled="true"  android:drawable="@android:color/transparent" />
    <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@android:color/transparent" />
    <item android:state_pressed="true" android:drawable="@drawable/personal_box_pressed" />
    <item android:state_enabled="true" android:drawable="@android:color/transparent" />
    <item android:state_focused="true" android:drawable="@drawable/personal_box_pressed" />
</selector>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值