RadioGroup 自動換行且保留點擊事件

相信用過RadioGroup的同窗都踩過不少坑,其中之一就是這個控件設計的不是很合理,不能設置裏面的radiobutton的 排列方式(幾行幾列),致使咱們開發的時候要調整裏面的佈局非常麻煩。算法

另一個坑是 動態new 的時候選默認值的問題,這個在以前的一篇文章 RadioGroup中RadioButton默認選中問題  這個裏面已經提到過了,就再也不細說了。今天主要說說這個radiogroup怎麼調整佈局爲自動換行的問題。佈局

當咱們本身寫完RadioGroup 後,裏面寫好radiobutton,很是簡單,一通複製粘貼,一大排就出來了,運行一下 ,很是棒,單選等功能都很好用。就像這樣.net

 

 

 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  


 

對應的界面展現效果:設計

 

默認選中了第一個,而後 ,產品經理過來了,你這麼放確定是不行的,能不能改爲4行3列的。3d

 

而後你心想,小兒科,去查了一下RadioGroup的屬性,發現並無原生支持的屬性,能夠設置內部RadioButton的幾行幾列的屬性。blog

繼續想一下 ,這還能難道我? 而後寫了幾個LinearLayout   把RadioButton套起來。事件

 

因而代碼被你改爲了這樣開發

 

 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  


對應的界面展現效果get

 

 

 

完美實現  6不6 ,嘴角浮起了輕蔑的微笑...產品

 

而後運行,點擊選一下試試,woc,不對啊,這點擊效果不對啊 ,發現原來默認選中的 沒有取消選中啊,點擊事件不對了啊,分分鐘懵逼了...

 

因此其實原生的RadioGroup 存在的問題:

 

1. 若是不結合其餘佈局,例如LinearLayout, 則只能實現單行多個按鈕組,或者單列多個按鈕組。 
2. 若是結合其餘佈局, 雖然能夠實現多行多列的RadioButton佈局,可是,若是不經過一些互斥算法,也沒法實現按鈕組的單選操做。 

 

因此要對其進行改寫:

 

 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  


 

 

而後將佈局文件RadioGroup改成 自定義的MyRadioGroup

 

 

 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  


看下效果和 上面套用linearlayout的效果是同樣的,並且不影響RadioGroup的點擊事件。

 

可是這個僅僅是實現了自動換行的效果,沒有真正實現能夠設置 RadioGroup幾行幾列的效果。可是能夠經過設置RadioButton的寬度就調這個每行的個數,怎麼直接在自定義的RadioGroup直接寫兩個 設置行列的方法,也是沒有搞定!若是你們有搞定的 或者有好的方法,能夠分享一下!技術就是用來分享的!

 

DEMO下載

 

若是還有其餘問題,能夠加入咱們的qq羣討論交流: 開發一羣:415275066 開發二羣:537532956

相關文章
相關標籤/搜索