android 多行 RadioButton的使用

最近项目用到了多行RadioButton,随记录下.

先给出RadioButton的布局

<com.kuibu.jucai.widget.MyRadioGroup    android:id="@+id/myRadioGroup"    android:layout_width="match_parent"    android:layout_height="wrap_content">

    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">

        <RadioButton            android:id="@+id/rb_50"            android:layout_width="match_parent"            android:layout_height="35dp"            android:layout_marginLeft="@dimen/space_10"            android:layout_weight="1"            android:background="@drawable/poundage_selector"            android:button="@null"            android:gravity="center"            android:paddingBottom="@dimen/space_10"            android:paddingLeft="@dimen/space_20"            android:paddingRight="@dimen/space_20"            android:paddingTop="@dimen/space_10"            android:text="50¥"            android:textColor="@drawable/fg_order_text_selector" />

        <RadioButton            android:id="@+id/rb_100"            android:layout_width="match_parent"            android:layout_height="35dp"            android:layout_marginLeft="@dimen/space_10"            android:layout_weight="1"            android:background="@drawable/poundage_selector"            android:button="@null"            android:gravity="center"            android:paddingBottom="@dimen/space_10"            android:paddingLeft="@dimen/space_20"            android:paddingRight="@dimen/space_20"            android:paddingTop="@dimen/space_10"            android:text="100¥"            android:textColor="@drawable/fg_order_text_selector" />

        <RadioButton            android:id="@+id/rb_150"            android:layout_width="match_parent"            android:layout_height="35dp"            android:layout_marginLeft="@dimen/space_10"            android:layout_marginRight="@dimen/space_10"            android:layout_weight="1"            android:background="@drawable/poundage_selector"            android:button="@null"            android:gravity="center"            android:paddingBottom="@dimen/space_10"            android:paddingLeft="@dimen/space_30"            android:paddingRight="@dimen/space_30"            android:paddingTop="@dimen/space_10"            android:text="150¥"            android:textColor="@drawable/fg_order_text_selector" />

    </LinearLayout>

    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">

        <RadioButton            android:id="@+id/rb_200"            android:layout_width="match_parent"            android:layout_height="35dp"            android:layout_marginLeft="@dimen/space_10"            android:layout_marginTop="@dimen/space_10"            android:layout_weight="1"            android:background="@drawable/poundage_selector"            android:button="@null"            android:gravity="center"            android:paddingBottom="@dimen/space_10"            android:paddingLeft="@dimen/space_20"            android:paddingRight="@dimen/space_20"            android:paddingTop="@dimen/space_10"            android:text="200¥"            android:textColor="@drawable/fg_order_text_selector" />

        <RadioButton            android:id="@+id/rb_500"            android:layout_width="match_parent"            android:layout_height="35dp"            android:layout_marginLeft="@dimen/space_10"            android:layout_marginTop="@dimen/space_10"            android:layout_toRightOf="@+id/rb_200"            android:layout_weight="1"            android:background="@drawable/poundage_selector"            android:button="@null"            android:gravity="center"            android:paddingBottom="@dimen/space_10"            android:paddingLeft="@dimen/space_20"            android:paddingRight="@dimen/space_20"            android:paddingTop="@dimen/space_10"            android:text="500¥"            android:textColor="@drawable/fg_order_text_selector" />

        <RadioButton            android:id="@+id/rb_1000"            android:layout_width="match_parent"            android:layout_height="35dp"            android:layout_marginLeft="@dimen/space_10"            android:layout_marginRight="@dimen/space_10"            android:layout_marginTop="@dimen/space_10"            android:layout_toRightOf="@+id/rb_500"            android:layout_weight="1"            android:background="@drawable/poundage_selector"            android:button="@null"            android:gravity="center"            android:paddingBottom="@dimen/space_10"            android:paddingLeft="@dimen/space_20"            android:paddingRight="@dimen/space_20"            android:paddingTop="@dimen/space_10"            android:text="1000¥"            android:textColor="@drawable/fg_order_text_selector" />    </LinearLayout></com.kuibu.jucai.widget.MyRadioGroup>

这里用到了一个自定义控件,如下
public class MyRadioGroup extends RadioGroup {

    //对外暴漏    private OnCheckedChangeListener mOnCheckedChangeListener;

    public MyRadioGroup(Context context) {        super(context);    }

    public MyRadioGroup(Context context, AttributeSet attrs) {        super(context, attrs);    }

    public void setOnCheckedChangeListener(OnCheckedChangeListener listener) {        mOnCheckedChangeListener = listener;    }

    @Override    public void addView(final View child, int index, ViewGroup.LayoutParams params) {        if (child instanceof LinearLayout) {            int childCount = ((LinearLayout) child).getChildCount();            for (int i = 0; i < childCount; i++) {                View view = ((LinearLayout) child).getChildAt(i);                if (view instanceof RadioButton) {                    final RadioButton button = (RadioButton) view;                    ((RadioButton) button).setOnTouchListener(new OnTouchListener() {

                        @Override                        public boolean onTouch(View v, MotionEvent event) {                            ((RadioButton) button).setChecked(true);                            checkRadioButton((RadioButton) button);                            if (mOnCheckedChangeListener != null) {                                mOnCheckedChangeListener.onCheckedChanged(MyRadioGroup.this, button.getId());                            }                            return true;                        }                    });                }            }        }

        super.addView(child, index, params);    }

    private void checkRadioButton(RadioButton radioButton) {        View child;        int radioCount = getChildCount();        for (int i = 0; i < radioCount; i++) {            child = getChildAt(i);            if (child instanceof RadioButton) {                if (child == radioButton) {                    // do nothing                } else {                    ((RadioButton) child).setChecked(false);                }            } else if (child instanceof LinearLayout) {                int childCount = ((LinearLayout) child).getChildCount();                for (int j = 0; j < childCount; j++) {                    View view = ((LinearLayout) child).getChildAt(j);                    if (view instanceof RadioButton) {                        final RadioButton button = (RadioButton) view;                        if (button == radioButton) {                            // do nothing                        } else {                            ((RadioButton) button).setChecked(false);                        }                    }                }            }        }    }}

网络不好,无法直接插入代码,只能这样拷贝了.
				
时间: 2024-11-09 02:51:53

android 多行 RadioButton的使用的相关文章

Android RadioGroup的RadioButton 选择改变字体颜色和背景颜色

RadioGroup <RadioGroup android:id="@+id/client_charge_radiogroup" android:layout_width="200dp" android:layout_height="40dp" android:layout_marginLeft="5dp" android:layout_alignParentRight="true" android

Android系列之Android 命令行手动编译打包详解

http://www.qdmm.com/BookReader/1222701,54263720.aspxhttp://www.qdmm.com/BookReader/1222701,54263869.aspxhttp://www.qdmm.com/BookReader/1222701,54263871.aspxhttp://www.qdmm.com/BookReader/1222701,54263876.aspxhttp://www.qdmm.com/BookReader/1222701,542

Android命令行工具

Android命令行工具 查看apk相关信息,例如versionCode,versionName等     $SDK_ROOT/build-tools/21.1.2/aapt.exe aapt dump badging xxxx.apk

android 命令行安装apk

有两种方式可以在android模拟器或真机上使用命令行安装apk 一种是使用adb install命令,网上通常是这种方式 另一种是通过android提供的命令,pm install. 需要先进入android命令行:adb shell 然后执行对应pm命令. pm命令的说明,转载另一篇博客:Android下pm 命令详解 具体内容摘录如下,以便以后查看: 0. Usage: usage: pm [list|path|install|uninstall] pm list packages [-f

Android命令行下蓝牙使用

注意:此部分只适用于broadcom 系列蓝牙芯片,例如RK903, AP6xxx 系列 通过su 命令切换到root 用户 1.先确认RFKILL 驱动已经加载 ls /sys/class/rfkill/rfkill0/ 如果没有找到rfkill0 这个目录,说明蓝牙驱动有问题. 请检查kernel 中的蓝牙选项是否有勾选了 请查看kernel 的打印信息中以"[BT_RFKILL]"打头的信息. 2.关闭蓝牙: A. 在Settings 界面中关闭蓝牙 B. 给蓝牙设备下电: ec

《Android第一行代码》笔记

学习Android开发差不多有两年时间了,期间也做了大大小小的一些项目.近来抽出闲暇想把Android基础强化一下,之前在网上看到了郭霖郭大神的几篇博客,从中受益不少.于是花了近一周时间看完了郭神的一本Android教材--<Android第一行代码>.这本书相比其他教材个人感觉更为基础,内容很实用.看完之后我也有一些收获,学到了一些可以很好的运用到实际中的Android小技巧,下面从中选出我认为很有价值的地方做个记录.同时欢迎各位指正补充~~ 1.查看当前界面处于哪个Activity. 很多

android 命令行编程

如果你想了解android上开发一个应用程序所需要的所有环节,在命令行上将这个过程操作一遍是最好的方法,下面你可以扔掉哪个慢腾腾的eclipse,然后建立如下一个auto.cmd文件,运行一下auto.cmd,你的电脑d:\work\njh1文件夹下就会产生一个SNjh.apk文件,该文件会自动安装到你手机上,并自动运行,这需要13个步骤,当然所用的环境为JDK1.7,ADT22.3,SDK API-17,d:盘建立文件夹work,当这些环境配好后就可以正常工作了,并且在系统环境中的path变量

Android命令行播放MP3音乐

/*************************************************************************** * Android命令行播放MP3音乐 * 说明: * 有时候我们会遇到Touch不能使用,也没有鼠标,但是我们要在Android上测试 * 声卡情况,所以我们会想到在adb或者debug终端上使用命令行来播放声音. * * 2016-5-26 深圳 南山平山村 曾剑锋 *************************************

android命令行创建并打包项目

命令行创建Android项目 查看sdk信息 将目录更改到 Android SDK 的tools/的路径. 执行: android list targets 这将打印您已经为您的 SDK 下载可用的 Android平台的列表.查找您要对其编译使您应用程序的平台的目标 id 的便笺.我们建议您选择可能的最高版本.您仍可以生成您的应用程序支持较旧的版本,但将生成目标设置为最新版本允许您优化您的应用程序的最新设备. 创建项目 命令 android create project --target <ta