相信用过RadioGroup的同窗都踩过不少坑,其中之一就是这个控件设计的不是很合理,不能设置里面的radiobutton的 排列方式(几行几列),致使咱们开发的时候要调整里面的布局非常麻烦。算法
另一个坑是 动态new 的时候选默认值的问题,这个在以前的一篇文章 RadioGroup中RadioButton默认选中问题 这个里面已经提到过了,就再也不细说了。今天主要说说这个radiogroup怎么调整布局为自动换行的问题。布局
当咱们本身写完RadioGroup 后,里面写好radiobutton,很是简单,一通复制粘贴,一大排就出来了,运行一下 ,很是棒,单选等功能都很好用。就像这样.net
对应的界面展现效果:设计
默认选中了第一个,而后 ,产品经理过来了,你这么放确定是不行的,能不能改为4行3列的。3d
而后你心想,小儿科,去查了一下RadioGroup的属性,发现并无原生支持的属性,能够设置内部RadioButton的几行几列的属性。blog
继续想一下 ,这还能难道我? 而后写了几个LinearLayout 把RadioButton套起来。事件
因而代码被你改为了这样开发
对应的界面展现效果get
完美实现 6不6 ,嘴角浮起了轻蔑的微笑...产品
而后运行,点击选一下试试,woc,不对啊,这点击效果不对啊 ,发现原来默认选中的 没有取消选中啊,点击事件不对了啊,分分钟懵逼了...
因此其实原生的RadioGroup 存在的问题:
1. 若是不结合其余布局,例如LinearLayout, 则只能实现单行多个按钮组,或者单列多个按钮组。
2. 若是结合其余布局, 虽然能够实现多行多列的RadioButton布局,可是,若是不经过一些互斥算法,也没法实现按钮组的单选操做。
因此要对其进行改写:
而后将布局文件RadioGroup改成 自定义的MyRadioGroup
看下效果和 上面套用linearlayout的效果是同样的,并且不影响RadioGroup的点击事件。
可是这个仅仅是实现了自动换行的效果,没有真正实现能够设置 RadioGroup几行几列的效果。可是能够经过设置RadioButton的宽度就调这个每行的个数,怎么直接在自定义的RadioGroup直接写两个 设置行列的方法,也是没有搞定!若是你们有搞定的 或者有好的方法,能够分享一下!技术就是用来分享的!
若是还有其余问题,能够加入咱们的qq群讨论交流: 开发一群:415275066 开发二群:537532956