《Android》『Spinner』- 下拉式選單的三種宣告方式

《Android Developers 參考文獻》

➥Spinner

 

《簡單介紹》

Spinner 元件是一組預先設定好資料的選項,提供標準的下拉式選單介面,使用這個元件最大的好處是可以縮減在介面中被眾多選項所佔據的空間,藉以設計出更為簡潔的介面。

 

《宣告 & 使用方式》

在 Android 中,所提供的介面元件都給予了使用者非常大的自由度,也就是說,我們可以很快地利用基本的 Spinner 宣告來得到擁有預設基本樣式的 Spinner 元件,若對於 Spinner 樣式有特殊的需求,亦可以依照自己的需求對於 Spinner 樣式做出修改,也就是自訂 Spinner 樣式,當在設計一些具有美感要求的介面時,通常都會透過自訂 Spinner 樣式的方式,打造獨一無二具有設計感的 Spinner 介面。

以下透過程式碼片段的方式,分別說明基本樣式宣告以及自訂樣式宣告的使用方法。

 

三種宣告方式 :

➥基本宣告

➥透過內建的 Adapter 宣告

➥透過自訂的 Adapter 宣告

1. 基本宣告

直接透過 layout.xml 設定 Spinner 的相關屬性與所參照的選項資料,快速產生一個基本預設樣式的 Spinner 元件。

MainActivity.java

activity_main.xml

string.xml

透過layout.xml 中的屬性設定,將選項資料來源指向 string.xml 中寫好資源參數,最後在 MainActivity 中宣告使用,這是最方便快速的方式,但也是最沒有靈活性的方式。

 

2. 透過內建的 Adapter 宣告

透過內建的 Adapter 類別來指定所需的資料與樣式,並指定給 Spinner 元件。

MainActivity.java

activity_main.xml

string.xml

與上一個方法一樣,Spinner 需要指定一個已知的選項資料,同樣是透過讀取 string.xml 裡面的資源檔獲得,但這邊不是在設定 layout.xml 屬性時指定,而是透過宣告一個內建的 ArrayAdapter<CharSequence> 來儲存所要設定的選項資料內容、getView() 介面格式以及getDropDownView() 介面格式。

(※ Spinner 元件包含了三個 View 元件,分別為 Spinner 元件本身的View (setBackground)getView() 介面以及 getDropDownView() 介面,其中getView() 介面為選單尚未展開時的 View,而 getDropDownView() 介面則為選單展開後,每一個選項所使用的 View。)

spinner_dropdown_item.xml

spinner_item.xml

在宣告建構 ArrayAdapter<CharSequence> 的時候,可以分別將 getView() 以及 getDropDownView() 的介面設定為自己定義的 layout 格式,由此可以完成初步的自定義 Spinner 樣式。

 

3. 透過自訂的 Adapter 宣告

透過自訂的 Adapter 類別來指定所需的資料與樣式,並指定給 Spinner 元件。

MainActivity.java

使用內建的 Adapter 雖然可以在宣告時,指定 ArrayAdapter<CharSequence> 中 getView() 以及 getDropDownView() 所使用的 layout 格式,但卻有它的侷限性,就是我們無法自行定義在 getView() 與 getDropDownView() 中所做的動作,這意味著若是使用內建的 Adapter, DropDownView 將會局限在同一種 layout 格式裡面,因此,若是我們想要讓 DropDownView 中的每個 item 可以自行定義不同的 layout 格式,就要透過自訂 Adapter 的方式,重新覆寫 ArrayAdapter<CharSequence>中 的 getView() 以及 getDropDownView() 方法。

這邊要提醒的是,覆寫 ArrayAdapter<CharSequence> 時,建構子所傳入的參數是可以自己設定的,通常所需的選項資料會在這邊傳入。

自訂 ArrayAdapter – ArrayAdapterSpn.java

透過繼承的方式,覆寫出屬於自己的 ArrayAdapter,在裡面重新定義建構子、getView()、getDropDownView() 三種方法,這樣不僅大大提升了介面的自由度,對於一些特殊的介面要求,亦能透過程式的改寫來達成,這也是專案開發的時候,最常用到的介面宣告方式。

賽肥膩膩

我們是低調到不行的肥膩夫妻檔,一路上一邊吵鬧一邊記錄著生活大小事,最近迷上了宅在家追劇,希望能透過文字將所有看過的影集好好紀錄,整理成屬於我們自己的回憶資料庫。

上 / 下一篇文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *