我试图获得一个自定义的Spinner,例如:
但我只能得到这个:
如你所见,我遇到了几个问题.
>虽然我添加了自定义箭头,但我仍然看到了原始箭头.
>我的自定义箭头显示在每一行.
>如何调整自定义箭头的尺寸和布局位置?
>如何生成带下划线的行?
这是我的代码:
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 /布局/ 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>
EDIT
我删除了ImageView并从Resource添加了第二个Spinnercreated:
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
这就是我得到的:
现在,我没有更换下拉箭头图标,我甚至还有第二个图标,全息复选框(效果很好,当我选择一个项目时选中),但是,我怎么才能得到我想要的那个?
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/
EDIT
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>
最后,微调器看起来像
EDIT 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"/>