SpinnerUIのカスタマイズをしたい場合は下記の方法で編集します。
- SpinnerItemの定義
- Iconの定義
- SpinnerDropdownItemの定義
- 定義したパーツを使う
- SpinnerItem
- SpinnerDropdownItem
SpinnerItemの定義
Spinnerボタン上に表示するTextViewを定義します。
下記のようにxmlファイルを作成し、layoutに配置します。
new_simple_spinner_item.xml
<?xml version="1.0" encoding="UTF-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerItemStyle" android:singleLine="true" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left" android:textSize="10sp" android:ellipsize="marquee" />
Iconの定義
SpinnerDropdownItemの定義で使うためのxmlファイルを定義します。
まず、Iconを作成し、drawableに配置します。
次にIcon画像をxmlファイルに定義します。
作成したxmlファイルはdrawableフォルダに配置します。
sample_check.xml
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 選択されているときのみアイコンを表示 --> <item android:state_checked="true" android:drawable="@drawable/sample_icon" /> </selector>
最後に上で作成したxmlファイル(変更用Icon画像)を参照する新たなスタイルを定義します。
styles.xmlファイルを以下のように作成し、valuesに配置します。
styles.xml
<?xml version="1.0" encoding="UTF-8"?> <resources > <style name="SampleIcon" parent="android:Widget.DropDownItem.Spinner"> <item name="android:checkMark">@drawable/sample_check</item> </style> </resources>
SpinnerDropdownItemの定義
Spinnerボタンを押したときに表示されるDropdownItemのCheckedTextViewを定義します。
Iconの定義で作成したスタイルを適用します。
new_simple_spinner_dropdown_item.xml
<?xml version="1.0" encoding="UTF-8"?> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="@style/SampleIcon" android:singleLine="true" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="13sp" android:ellipsize="marquee" />
定義したパーツを使う
SpinnerDropdownItemの定義、SpinnerItemの定義で作成したxmlファイルをソースコードでSpinnerのitemとして定義します。
サンプルのソースコード
SpinnerSample.java
SpinnerSample.java
public class SpinnerSample extends Activity { @Override protected void onCreate( Bundle savedInstanceState) { super.onCreate( savedInstanceState); setContentView( R.layout.spinner_sample); setSpinnerItem(); }
/** * スピナーの内容を設定します。 */ private void setSpinnerItem() {
// スピナーボタンに表示するテキスト ArrayAdapter<String> adapter = new ArrayAdapter<String>( this,R.layout.new_simple_spinner_item);
// スピナーを押したときに表示するチェックテキスト adapter.setDropDownViewResource( R.layout.new_simple_spinner_dropdown_item);
adapter.add( "Item-1"); adapter.add( "Item-2"); adapter.add( "Item-3"); adapter.add( "Item-4"); adapter.add( "Item-5"); adapter.add( "Item-6"); adapter.add( "Item-7");
Spinner spinner = ( Spinner) findViewById( R.id.spinner_sample); spinner.setAdapter( adapter); } }