天天看點

Android控件與布局——基礎控件RadioButton

今天,我們的主題是基礎控件RadioButton。在開始之前,我們還是以官方文檔為開端來開始我們的講解,下面是Android文檔中對RadioButton的簡介:

看過上一篇文章的應該可以了解到,這個和我們的CheckBox是十分類似的,不同的點在于,這個控件可以由非選中狀态通過點選事件轉為選中狀态,但是不能通過點選實作逆向的狀态轉換,一個預設樣式RadioButton控件的非選中和選中狀态如下:

Android控件與布局——基礎控件RadioButton

其組成和CheckBox一樣,我們同樣可以分别對其中的字型和Button進行設定,實作達到和CheckBox一樣的效果。在上面我們在簡介中得知,這個控件能通過點選事件實作的效果如下(不能逆向改變狀态):

Android控件與布局——基礎控件RadioButton

接下來,我們對其基本屬性進行設定,改變一下它的樣式:

Android控件與布局——基礎控件RadioButton

下面我們就結合一個小例子來實際的應用一下,這個小例子就是實作多項單選功能,運作的效果如下:

Android控件與布局——基礎控件RadioButton

布局檔案與控制邏輯如下:

可見,我們為了實作一個單選功能做了很多邏輯控制,而這樣的場景又非常多,沒有關系,我們接着官方文檔關于對其的介紹繼續向下看:

說這個RadioButton經常會結合RadioGroup一起使用,實作的功能正是我們上面所要實作的多項單選功能的操作。那下面就來看看如何使用RadioGroup實作上述例子的功能:

邏輯部分:

在布局部分,我們隻需要把之前放置在布局中的RadioButton放置在RadioGroup中即可:

邏輯部分我們首先為RadioGroup設定狀态變化監聽:

根據選擇的RadioButton的ID執行具體的邏輯代碼:

注意到在這裡我們隻實作了資料的擷取(RadioButton的文本内容),RadioGroup中的RadioButton之間的狀态管理(單選)是RadioGroup内部自己管理的,這為我們節省很多的開發邏輯,也是我們用它的主要目的。此外,這裡,我們還可以通過調用clearCheck()實作清除選擇狀态。

運作結果如下所示:

Android控件與布局——基礎控件RadioButton

同樣,如果你覺得RadioButton中的Button樣式不好看,你可以自定義一種,這裡,我們還是選用上一篇中的樣式代碼,執行效果如下:

Android控件與布局——基礎控件RadioButton

修改按鈕樣式是通過android:button屬性:

其中的check_box_back.xml代碼如下:

該控件的開源項目在網上找了一下,感覺沒有什麼比較好的,主要是因為它的封裝程度已經很高了,如果隻是想改動一下顯示樣式和邏輯,我們自己完全可以實作。好了,關于RadioButton到這裡的簡單介紹就介紹了。