web-dev-qa-db-ja.com

スピナードロップダウン矢印

次のようなカスタムスピナーを入手しようとしています。

しかし、私はこれを得ることができました:

enter image description here

ご覧のとおり、いくつかの問題が発生しています。

  1. カスタム矢印を追加しましたが、まだ元の矢印が表示されています。
  2. カスタム矢印がすべての行に表示されます。
  3. カスタム矢印の寸法とレイアウト位置を調整するにはどうすればよいですか?
  4. 下線が引かれた行を生成するにはどうすればよいですか?

これは私のコードです:

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番目の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>

しかし、結果はありません!私はまだこれを見ます:

enter image description here

EDIT 2

style.xmlを次のように変更しました:

http://pastie.org/private/es40xgebcajajltksyeow

そしてこれは私が得るものです:

enter image description here

ドロップダウン矢印アイコンを置き換える代わりに、2つ目のアイコンであるホロチェックボックス(1つの項目を選択するとうまく機能する)が表示されますが、それでも、必要なものだけを取得するにはどうすればよいですか?

manifest.xml

http://pastie.org/private/tu0izusbvvxe91lwmh9vnw

6

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>

最後に、スピナーは次のようになります enter image description here

編集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"/> 
9
Lennon Petrick

独自のドロップダウン画像を使用できます。

        <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>
0
siddharth patel