android动态添加selector选择器代码

本文介绍如何使用Android的StateListDrawable动态生成Selector选择器,包括创建不同状态下的GradientDrawable,如灰色圆型(normal)和红色(pressed),以及如何将这些Drawable应用到Button上实现视觉效果的切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态生成selector选择器

首先动态生成drawable

GradientDrawable pressed=new GradientDrawable();
pressed.setColor(Color.parseColor("#ff0000"));
GradientDrawable normal=new GradientDrawable();
normal.setColor(Color.parseColor("#44000000"));
normal.setShape(GradientDrawable.OVAL);

normal为圆型,灰色,pressed为红色

也可以用静态drawable

Drawable normal = getResources().getDrawable(R.drawable.point_pressed);
Drawable pressed = getResources().getDrawable(R.drawable.point_normal);

point_pressed.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ff0000"/>
</shape>

point_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
    <solid android:color="#ff0000"/>
</shape>

生成选择器,用一个Button做测试

Button button=findViewById(R.id.btn);

StateListDrawable bg = new StateListDrawable();
Drawable normal = getResources().getDrawable(R.drawable.point_pressed);
Drawable pressed = getResources().getDrawable(R.drawable.point_normal);
bg.addState(new int[]{android.R.attr.state_pressed}, pressed);
bg.addState(new int[]{}, normal);

button.setBackground(bg);

得到结果

未按下状态

按下状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值