搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
很楠不爱3
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
unity中检测不到HTC vive手柄如何解决_unity收不到手柄
2
MapReduce案例:手机流量的统计_mapreduce案例—手机流量统计
3
IKEV1_ike端口号
4
Alex 的 Hadoop 菜鸟教程: 第21课 不只是在HBase中用SQL:Phoenix_cannot locate configuration: tried hadoop-metrics2
5
AI绘画Stable Diffusion去除水印,三种操作一键达成你想要的效果!_stable diffusion 去水印
6
『算法导论』什么是算法?什么是程序?_算法和程序
7
安利几个优质nlp开源项目
8
用稀疏表示实现人脸识别_稀疏表示图像识别python
9
Excel 查找后隐去右边列
10
python中tkinter的button_在python tkinter界面中添加按钮的实例
当前位置:
article
> 正文
自定义 RadioButton 选中和未选中时的图片_radiobutton自定义选中图片
作者:很楠不爱3 | 2024-06-18 04:33:03
赞
踩
radiobutton自定义选中图片
RadioButton长成什么样子是由其Background、Button等属性决定的,Android系统
使用style定义了默认的属性,在android源码
android/frameworks/base/core/res/res/values/styles.xml中可以看到默认的定义:
Xml代码
<
style
name
=
"Widget.CompoundButton.RadioButton"
>
<
item
name
=
"android:background"
>
@android:drawable/btn_radio_label_background
</
item
>
<
item
name
=
"android:button"
>
@android:drawable/btn_radio
</
item
>
</
style
>
即其背景图是btn_radio_label_background,其button的样子是btn_radio
btn_radio_label_background是什么?
其路径是android/frameworks/base/core/res/res/drawable-mdpi/btn_radio_label_background.9.png
可以看到是一个NinePatch图片,用来做背景,可以拉伸填充。
btn_radio是什么?
其路径是android/frameworks/base/core/res/res/drawable/btn_radio.xml
是个xml定义的drawable,打开看其内容:
Xml代码
<
selector
xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
<
item
android:state_checked
=
"true"
android:state_window_focused
=
"false"
android:drawable
=
"@drawable/btn_radio_on"
/>
<
item
android:state_checked
=
"false"
android:state_window_focused
=
"false"
android:drawable
=
"@drawable/btn_radio_off"
/>
<
item
android:state_checked
=
"true"
android:state_pressed
=
"true"
android:drawable
=
"@drawable/btn_radio_on_pressed"
/>
<
item
android:state_checked
=
"false"
android:state_pressed
=
"true"
android:drawable
=
"@drawable/btn_radio_off_pressed"
/>
<
item
android:state_checked
=
"true"
android:state_focused
=
"true"
android:drawable
=
"@drawable/btn_radio_on_selected"
/>
<
item
android:state_checked
=
"false"
android:state_focused
=
"true"
android:drawable
=
"@drawable/btn_radio_off_selected"
/>
<
item
android:state_checked
=
"false"
android:drawable
=
"@drawable/btn_radio_off"
/>
<
item
android:state_checked
=
"true"
android:drawable
=
"@drawable/btn_radio_on"
/>
</
selector
>
定义了不同状态下radioButton长成什么样子。
如果不知道selector是什么,就要去看下Android SDK文档中Dev Guide->Application Resources->Resource Types。
以下面一个item为例:
<item android:state_checked="true" android:state_pressed="true"
android:drawable="@drawable/btn_radio_on_pressed" />
意思即为当radiobutton被选中时,并且被按下时,其Button应该长成btn_radio_on_pressed这个样子。
文件是android/frameworks/base/core/res/res/drawable-mdpi/btn_radio_on_pressed.png
drawable的item中可以有以下属性:
android:drawable="@[package:]drawable/drawable_resource"
android:state_pressed=["true" | "false"]
android:state_focused=["true" | "false"]
android:state_selected=["true" | "false"]
android:state_active=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_window_focused=["true" | "false"]
当按钮的状态和某个item匹配后,就会使用此item定义的drawable作为按钮图片。
从上面分析我们如果要修改RadioButton的外观,那么步骤应该是:
(1)制作一个9patch的图片作为背景图
准备一副PNG图片,其中白色为透明色,是否需要透明各人根据自己需要决定。
运行SDK/tools/draw9patch
在可伸缩的范围周围加上黑色的线告知系统这些区域可以伸缩。
制作完的图片,周围多了黑色线。
(2)针对不同的状态提供按钮图片
enabled, on: 紫色外框、红色中心点
enabled, off:只有紫色外框
enabled, on, pressed:黄色外框,红色中心点
enabled, off, pressed:黄色外框
disabled, on: 灰色外框、灰色中心点
disabled, off: 灰色外框
其余的状态此处就不再定义。
(3)使用xml描述一个drawable
在res/drawable/创建custom_radio_btn.xml
Xml代码
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
selector
xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
<
item
android:state_enabled
=
"true"
android:state_checked
=
"true"
android:state_pressed
=
"true"
android:drawable
=
"@drawable/enabled_on_pressed"
/>
<
item
android:state_enabled
=
"true"
android:state_checked
=
"false"
android:state_pressed
=
"true"
android:drawable
=
"@drawable/enabled_off_pressed"
/>
<
item
android:state_enabled
=
"true"
android:state_checked
=
"true"
android:drawable
=
"@drawable/enabled_on"
/>
<
item
android:state_enabled
=
"true"
android:state_checked
=
"false"
android:drawable
=
"@drawable/enabled_off"
/>
<
item
android:state_enabled
=
"false"
android:state_checked
=
"true"
android:drawable
=
"@drawable/disabled_on"
/>
<
item
android:state_enabled
=
"false"
android:state_checked
=
"false"
android:drawable
=
"@drawable/disabled_off"
/>
</
selector
>
Item顺序是有讲究的,条件限定越细致,则应该放到前面。比如这儿如果把1,2行和3,4行的item交换,那么pressed的就永远无法触发了,因为有item已经满足条件返回了。可以理解为代码中的if语句。
(4)创建一个自定义的style,并应用到RaidioButton的style属性上
Xml代码
<
style
name
=
"CustomRadioBtn"
>
<
item
name
=
"android:background"
>
@drawable/radio_btn_bg
</
item
>
<
item
name
=
"android:button"
>
@drawable/custom_radio_btn
</
item
>
</
style
>
运行ap即可看到此RadioButton的外观已经改变,此demo可以看到文字被按钮遮盖了一部分,
这儿是因第一步制作9patch图片时没有留出按钮图片空间来,稍作修改即可。
转自:
http://mypyg.iteye.com/blog/768471
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/很楠不爱3/article/detail/733654
推荐阅读
article
Android
项目中
自定义
多个
RadioButton
并排一列选择
效果
实现
_
自定义
radiobu...
3.1、布局文件引用了android:background=“@drawable/radiostyles”3.2、布局文...
赞
踩
article
Android
项目
中
自定义多个
RadioButton
并排一列选择效果实现_
android
中
ra...
3.1、布局文件引用了
android
:background=“@drawable/radiostyles”3.2、布局文...
赞
踩
article
【
Android
开发
--
新手必看篇】
RadioButton
单选框
(含高级样式)_
android
r...
Android
笔记 ——各类控件的使用(控件)-
单选框
【若对该知识点有更多想了解的,欢迎私信博主~~】
单选框
:R...
赞
踩
article
记录学习
Android
基础的心得05:常用控件(基础篇)_1.
edittext
、
radiobutto...
文章目录前言一
、
基本控件二
、
1.总结功高成怨府,权盛是危机。——王迈《读渡江诸将传》前言在心得文章02里面介绍了控件的常...
赞
踩
article
Android
基础知识
4-
3.5
RadioButton
(
单选
按钮
)&
Checkbox
(复选框)详...
RadioButton
表示
单选
按钮
,是button的子类,每一个
按钮
都有选择和未选中两种状态,经常与RadioGroup...
赞
踩
article
WPF 组合单选 样式
RadioButton
Style
_
wpf
radiobutton
s...
本来想写个方便的控件 ,但是真正写起来内容太多了,所以还是分三个样式来解决等到后面有什么组合的方法 再看使用自定义控件包...
赞
踩
article
QML
入门教程
(6):单选按钮
RadioButton
的用法及自定义_
qml
radiobutton
...
一
RadioButton
的简单用法
QML
的单选按钮是
RadioButton
,例如下面的界面实现代码如下:RadioBut...
赞
踩
相关标签
android
RadioButton
自定义效果
动态
java
安卓
android studio
学习
QML控件