Android中如何设置RadioButton在文字的右边,图标在左边

来源:互联网 发布:期货日线数据下载 编辑:程序博客网 时间:2024/04/29 16:55

Android中如何设置RadioButton在文字的右边,图标在左边?

现状:Android 默认的 RadioGroup 中 RadioButton和 文字 Text 的位置关系是 Radiobutton在文字左边。且只有点击Radiobutton才能触发点击事件,文字不能触发监听事件。

目标:外观UI上要和 RadioGroup 的保持一致,但是逻辑上除了要实现单选功能外,还要能根据逻辑要求Disable掉某一条RadioButton(不能点击,按钮和文字灰白)。

一般的RadioGroup效果图:


解决方案:

 一、利用Radiobutton的属性

      1.android:button="@null"将图标给隐藏

      2.再用android:drawableRight="@android:drawable/btn_radio"在右边生成一个图标,再用android:text="文字内容"在隐藏图标的位置显示文字。

      3.根据逻辑在代码中设置Radiobutton的enable、focusable、clickable的属性。

      详细参见博客:http://blog.csdn.net/sunnyfans/article/details/7901592(谢谢博主哦!)

方案一的效果图:


二、自定义布局

           

          布局描述: 该布局由两层框架组成。红色框是一个Realtivelayout,由左边的Textview和右边的Radiobutton组成,下边的红色框组成相同。两个红色框外部套着一个LinearLayout。这样就模拟了RadioGroup的UI效果。但是RadioGroup的单选逻辑和Disable的功能需要进一步实现。

          下面描述一下实现过程中遇到的问题:

           1 模拟RadioGroup的UI效果遇到的问题:

             (1)TextView 要居左,Radiobutton 要居右。使用RelativeLayout比较容易实现 。若使用LinearLayout来实现,需用weight属性来控制他们的位置,而且会出现Textview的内容变长会挤压右边Radiobutton的问题,待解。

             (2)Text 要水平居中,垂直居中显示。如果父布局使用RelativeLayout  则使用layout_centerVertical属性来控制。如果父布局使用LinearLayout,则要考虑综合使用layout_gravity、weight属性。其中layout_gravity在LinearLayout下的用法有点诡异。Orientation属性会影响到这个属性某些值能否起作用。详请参见博客

http://www.cnblogs.com/xiaoran1129/archive/2013/03/26/2982733.html(谢谢博主哦!)


             2 实现逻辑功能遇到的问题:

                (1)要求能点击文字和Radiobutton都能响应监听事件,需把监听加到红色方框的布局上,同时要把Textview和Radiobutton的focusable和clickable设为false。如若不然,Radiobutton也能获取监听事件。然后在代码里实现互斥选中的逻辑和enable/diable某一条的逻辑。

                (2)为上下两个View加个分隔线吧。两种方法

                           使用Linearlayout的属性:android:showDividers="middle" 和 android:divider="?android:attr/listDivider">,同时使用,缺一不可;

                     使用Imageview组件自己画一个分隔线。

                     详请参见博客http://blog.csdn.net/cjllife/article/details/8146943(谢谢博主哦!)

方案二的效果图:




先写到这里,慢慢增肥。


0 0
原创粉丝点击