現在、すべてのデバイスでドロップダウン スピナーが必要なため、IcsSpinner を使用しています。これは私が達成したいことです(閉じたスピナーと展開されたものを示しています):
しかし、私はそうすることができません。私はこのコードを試しました:
<com.actionbarsherlock.internal.widget.IcsSpinner
android:id="@+id/myspinner"
style="@style/SpinnerStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:minHeight="@dimen/spinner_min_height"
android:prompt="@string/pick_one" />
スタイルで:
<style name="SpinnerStyle" parent="Sherlock.__Widget.Holo.Spinner">
<item name="android:popupBackground">@drawable/spinner_selector</item>
<item name="android:dropDownSelector">@color/white_text</item>
</style>
および描画可能な spinner_selector.xml :
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@color/red" />
<item android:state_focused="true" android:drawable="@color/red"/>
<item android:state_selected="true" android:drawable="@color/red"/>
<item android:drawable="@color/spinner_grey_bg"/>
</selector>
ただし、出力は次のようになります。
これを行うことでアダプターのビューをカスタマイズすることで、別の方法を試みました。
ArrayAdapter<String> myAdapter= new ArrayAdapter<String>(mContext,
R.layout.spinner_entry_textview, adapterArray);
mySpinner.setAdapter(myAdapter);
spinner_entry.textview.xmlを使用:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv_spinner_entry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/min_height_touch"
android:background="@drawable/spinner_selector"
android:textColor="@drawable/spinner_text_selector"
android:gravity="right|center_vertical"
/>
そしてspinner_text_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:color="@color/white_text" />
<item android:state_focused="true" android:color="@color/white_text"/>
<item android:state_selected="true" android:color="@color/white_text"/>
<item android:color="@color/red_text"/>
</selector>
しかし、私はこの出力を取得していますが、これはほとんど私が望むものですが、閉じると灰色と赤のテキストも描画されます。(矢印が指す最初の要素は、白いテキストの濃い灰色の背景にする必要があります)
スピナーには内部リストビューがあるようですが、何もしなかったため、デフォルトのリストビューにスタイルを適用しようとしました:
<style name="AppTheme" parent="Theme.Sherlock.Light">
<item name="android:listViewStyle">@style/MyListView</item>
<item name="android:spinnerItemStyle">@style/SpinnerItem</item>
<item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item>
<item name="spinnerItemStyle">@style/SpinnerItem</item>
<item name="spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item>
</style>
<style name="MyListView" parent="@android:style/Widget.ListView">
<item name="android:textColor">@drawable/spinner_text_selector</item>
<item name="android:background">@drawable/spinner_selector</item>
</style>
<style name="SpinnerDropDownItem">
<item name="android:textColor">@drawable/spinner_text_selector</item>
<item name="android:background">@drawable/spinner_selector</item>
</style>
<style name="SpinnerStyle" parent="Sherlock.__Widget.Holo.Spinner">
<item name="android:popupBackground">@drawable/spinner_selector</item>
<item name="android:dropDownSelector">@color/white_text</item>
</style>
これを達成する方法についてのアイデアはありますか?それは大歓迎です。