Android 自定义RadioButton使用

【声明】此文出自指尖飞落的博客:http://blog.csdn.net/huntersnail

——每天写一篇博客,每天做一点技术积累!


Android自定义矩形及selector、shape的使用

由于项目开发需要,以前虽然用过selector、shape但是都没有好好去研究过,只知道用,不知道它们的属性具体有哪些作用。虽然网上一查就都知道了,感觉还是要自己去弄懂一下。

下面咱们一起去研究下:

一、xml布局文件

/测试Demo/res/layout/check_box.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
 
    <LinearLayout
        android:id="@+id/order_meth"
        style="@style/style_padding"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:background="@drawable/selector_mine"
        android:orientation="horizontal" >
 
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="送达方式"
            android:textSize="18sp" />
 
        <RadioGroup
            android:id="@+id/type"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal" >
 
            <RadioButton
                android:id="@+id/rb_one"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/sku_rd"
                android:layout_marginLeft="20dp"
                android:gravity="center"
                android:checked="true"
                android:padding="10dp"
                android:text="一小时达" />
 
            <RadioButton
                android:id="@+id/rb_two"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/sku_rd"
                android:layout_marginLeft="10dp"
                android:gravity="center"
                android:padding="10dp"
                android:text="预定送达" />
        </RadioGroup>
    </LinearLayout>
 
</LinearLayout>


二、点击时背景颜色处理

1、style样式

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="sku_rd">
        <item name="android:textColor">@color/selector_text</item>
        <item name="android:background">@drawable/check_boxs</item>
        <item name="android:button">@null</item><!--去掉RadioButton的那个圆形-->
    </style>
</resources>


2、点击RadioButton边框背景颜色变换的关键xml

属性解读

“true”表示按下状态使用(例如按钮按下);“false”表示非按下状态使用。
            android:state_focused="true/false"

“true”表示聚焦状态使用(例如使用滚动球/D-pad聚焦Button);“false”表示非聚焦状态使用。
            android:state_selected="true/false"

“true”表示选中状态使用(例如Tab打开);“false”表示非选中状态使用。
            android:state_active="true/false"

“true”表示可勾选状态时使用;“false”表示非可勾选状态使用。(只对能切换可勾选—非可勾选的构件有用。)
            android:state_checkable="true/false"

 “true”表示勾选状态使用;“false”表示非勾选状态使用。
            android:state_checked="true/false"

true”表示勾选状态使用;“false”表示非勾选状态使用。
            android:state_enabled="true/false"

“true”表示可用状态使用(能接收触摸/点击事件);“false”表示不可用状态使用。
            android:state_window_focused="true/false"

“true”表示应用程序窗口有焦点时使用(应用程序在前台);“false”表示无焦点时使用(例如Notification栏拉下或对话框显示)。

/测试Demo/res/drawable/check_boxs.xml

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


3、文字颜色的变化

/测试Demo/res/color/selector_text.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 文字选中时的背景-->
    <item android:state_focused="true" android:color="#DB251F"/>
    <!-- 文字单击时的背景 -->
    <item android:state_pressed="true" android:color="#DB251F"/>
    <item android:state_checked="true" android:color="#DB251F"/>
    <item android:state_selected="true" android:color="#DB251F"/>
    <!-- 文字默认的背景 -->
    <item android:color="#969696"/>
</selector>


三、下面是自定义的两个矩形

属性解读

corners:圆角

android:radius为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,同时设置五个属性,则Radius属性无效
android:Radius="20dp"                          设置四个角的半径
android:topLeftRadius="20dp"              设置左上角的半径 
android:topRightRadius="20dp"           设置右上角的半径 
android:bottomLeftRadius="20dp"       设置右下角的半径 
android:bottomRightRadius="20dp"    设置左下角的半径

stroke:描边
android:width="2dp" 描边的宽度

android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp" 
android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。

solid:填充
android:color指定填充的颜色

/测试Demo/res/drawable/shape_sku_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <stroke android:width="1dp" android:color="#C8C8C8"/>
    <corners android:radius="3dp"/>
    <solid android:color="@android:color/white"/>
</shape>


/测试Demo/res/drawable/shape_sku.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <stroke android:width="1dp" android:color="#DB251F"/>
    <corners android:radius="3dp"/>
    <solid android:color="@android:color/white"/>
</shape>


四、效果图

 

五、   完

尊重作者劳动成果:
https://blog.csdn.net/huntersnail/article/details/47614585 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值