相信用過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