次のようなカスタムスピナーを入手しようとしています。
しかし、私はこれを得ることができました:
ご覧のとおり、いくつかの問題が発生しています。
これは私のコードです:
onCreateView()
:
Spinner spinner = (Spinner) rootView.findViewById(R.id.spinner);
this.arraySpinner = new String[]{
"Seleziona una data",
"03 Agosto 2015",
"13 Giugno 2015",
"27 Novembre 2015",
"30 Dicembre 2015",
};
ArrayAdapter<String> adapter = new ArrayAdapter<>(
getActivity(),
R.layout.row_spinner,
R.id.weekofday,
arraySpinner);
spinner.setAdapter(adapter);
res/layout/row_spinner.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="horizontal"
Android:padding="8dp">
<TextView Android:id="@+id/weekofday"
Android:singleLine="true"
Android:textSize="@dimen/textSize"
style="@style/SpinnerDropdown"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"/>
<ImageView Android:id="@+id/icon"
Android:paddingStart="8dp"
Android:paddingLeft="8dp"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/spinner_arrow"/>
</LinearLayout>
[〜#〜]編集[〜#〜]
ImageView
を削除し、リソースから2番目のSpinner
createdを追加しました。
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
getActivity(),
R.array.date,
R.layout.spinner_layout);
spinnerDate.setAdapter(adapter);
Spinner spinnerTime = (Spinner) rootView.findViewById(R.id.spinnerTime);
ArrayAdapter<CharSequence> adapterTime = ArrayAdapter.createFromResource(
getActivity(),
R.array.ore,
R.layout.spinner_layout);
spinnerTime.setAdapter(adapterTime);
このレイアウトで:
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@Android:id/text1"
Android:padding="8dp"
Android:singleLine="true"
Android:layout_height="wrap_content" Android:layout_width="match_parent"/>
これをstyle.xml
に追加しました:
<style name="AppTheme" parent="@style/_AppTheme"/>
<!-- Base application theme. -->
<style name="_AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="Android:dropDownSpinnerStyle">@style/SpinnerTheme </item>
<item name="Android:windowActionBarOverlay">false</item>
<item name="colorPrimary">@color/ColorPrimary</item>
<item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
</style>
....
....
....
<!--Spinner styles 2-->
<style name="SpinnerTheme" parent="Android:Widget.Spinner">
<item name="Android:background">@drawable/apptheme_spinner_background_holo_light</item>
<item name="Android:dropDownSelector">@drawable/apptheme_list_selector_holo_light</item>
</style>
<style name="SpinnerTheme.DropDown">
<item name="Android:spinnerMode">dropdown</item>
</style>
<!-- Changes the spinner drop down item radio button style -->
<style name="DropDownItemSpinnerTheme" parent="Android:Widget.DropDownItem.Spinner">
<item name="Android:checkMark">@drawable/apptheme_btn_radio_holo_light</item>
</style>
<style name="ListViewSpinnerTheme" parent="Android:Widget.ListView">
<item name="Android:listSelector">@drawable/apptheme_list_selector_holo_light</item>
</style>
<style name="ListViewSpinnerTheme.White" parent="Android:Widget.ListView.White">
<item name="Android:listSelector">@drawable/apptheme_list_selector_holo_light</item>
</style>
<style name="SpinnerItemTheme"
parent="Android:TextAppearance.Widget.TextView.SpinnerItem">
<item name="Android:textColor">#000000</item>
</style>
しかし、結果はありません!私はまだこれを見ます:
EDIT 2
style.xml
を次のように変更しました:
http://pastie.org/private/es40xgebcajajltksyeow
そしてこれは私が得るものです:
ドロップダウン矢印アイコンを置き換える代わりに、2つ目のアイコンであるホロチェックボックス(1つの項目を選択するとうまく機能する)が表示されますが、それでも、必要なものだけを取得するにはどうすればよいですか?
manifest.xml
:
Imageview
をカスタムレイアウトrow_spinner.xml
から削除する必要があります。場合によっては、カスタムレイアウト内に矢印を作成する必要はありません。作成した場合は、偶然のように各行に作成されます。あなたが私たちに示したのと同じことを行うには、Spinner
スタイルをstyles.xml
に変更する必要があります。
例えば:
<resources>
<style name="SpinnerTheme" parent="Android:Widget.Spinner">
<item name="Android:background">@drawable/spinner_background_holo_light</item>
<item name="Android:dropDownSelector">@drawable/list_selector_holo_light</item>
</style>
<style name="SpinnerTheme.DropDown">
<item name="Android:spinnerMode">dropdown</item>
</style>
<!-- Changes the spinner drop down item radio button style -->
<style name="DropDownItemSpinnerTheme" parent="Android:Widget.DropDownItem.Spinner">
<item name="Android:checkMark">@drawable/btn_radio_holo_light</item>
</style>
<style name="ListViewSpinnerTheme" parent="Android:Widget.ListView">
<item name="Android:listSelector">@drawable/list_selector_holo_light</item>
</style>
<style name="ListViewSpinnerTheme.White" parent="Android:Widget.ListView.White">
<item name="Android:listSelector">@drawable/list_selector_holo_light</item>
</style>
<style name="SpinnerItemTheme"
parent="Android:TextAppearance.Widget.TextView.SpinnerItem">
<item name="Android:textColor">#000000</item>
</style>
</resources>
詳細については、以下をご覧ください。 http://androidopentutorials.com/Android-how-to-get-holo-spinner-theme-in-Android-2-x/
編集
selector_spinner.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<layer-list>
<item>
<shape>
<gradient Android:angle="90" Android:endColor="#ffffff" Android:startColor="#ffffff" Android:type="linear" />
<stroke Android:width="1dp" Android:color="#504a4b" />
<corners Android:radius="5dp" />
<padding Android:bottom="3dp" Android:left="3dp" Android:right="3dp" Android:top="3dp" />
</shape>
</item>
<item>
<bitmap Android:gravity="bottom|right" Android:src="@Android:drawable/arrow_up_float" />
</item>
</layer-list>
</item>
</selector>
styles.xml:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Android:Theme.Holo.Light.DarkActionBar">
<item name="Android:spinnerStyle">@style/SpinnerTheme</item>
</style>
<style name="SpinnerTheme" parent="Android:Widget.Spinner">
<item name="Android:background">@drawable/selector_spinner</item>
</style>
</resources>
最後に、スピナーは次のようになります
編集2
次のコードはdetails_fragment_three.xml
にあります
<Spinner
Android:id="@+id/spinnerDate"
Android:layout_marginLeft="-8dp"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/spinner_item_drawable"/>
独自のドロップダウン画像を使用できます。
<item>
<layer-list>
<item>
<color Android:color="@Android:color/white" />
</item>
<item>
<bitmap Android:gravity="center_vertical|right" Android:src="@drawable/down_arrow" /> // down_arrow replace your image
</item>
</layer-list>
</item>
</selector>