wake-up-neo.com

Spinner Dropdown-Pfeil

Ich versuche, einen benutzerdefinierten Spinner wie diesen zu erhalten:

aber ich konnte nur das bekommen:

enter image description here

Wie Sie sehen, habe ich mehrere Probleme.

  1. Obwohl ich einen benutzerdefinierten Pfeil hinzugefügt habe, wird das Original weiterhin angezeigt.
  2. Mein benutzerdefinierter Pfeil wird in jeder Zeile angezeigt.
  3. Wie passe ich die Abmessungen und die Layoutposition meines benutzerdefinierten Pfeils an?
  4. Wie erstelle ich unterstrichene Zeilen?

Das ist mein Code:

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>

EDIT

Ich habe die ImageView entfernt und eine zweite Spinner aus der Ressource hinzugefügt:

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);

mit diesem layout:

<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"/>

Ich habe dies zu meinem style.xml hinzugefügt:

<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>

aber es gibt kein ergebnis! Ich sehe das immer noch:

enter image description here

EDIT 2

Ich habe den style.xml geändert in:

http://pastie.org/private/es40xgebcajajltksyeow

und das bekomme ich:

enter image description here

Anstatt das Dropdown-Pfeilsymbol zu ersetzen, habe ich jetzt sogar ein zweites Symbol, das Holo-Kontrollkästchen (das gut funktioniert und ausgewählt wird, wenn ich ein Element auswähle). Aber wie erhalte ich nur das gewünschte?

manifest.xml:

http://pastie.org/private/tu0izusbvvxe91lwmh9vnw

6

Sie müssen die Imageview in Ihrem benutzerdefinierten Layout row_spinner.xml entfernen. In dem Fall müssen Sie keinen Pfeil in Ihrem benutzerdefinierten Layout erstellen. Andernfalls wird er in jeder Zeile so erstellt, wie es Ihnen passiert ist. Um dasselbe zu tun, wie Sie es uns gezeigt haben, müssen Sie den Spinner-Stil in Ihren styles.xml ändern.

Zum Beispiel:

<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>

Weitere Informationen finden Sie unter: http://androidopentutorials.com/Android-how-to-get-holo-spinner-theme-in-Android-2-x/

BEARBEITEN

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>

Am Ende sieht der Spinner wie aus enter image description here

BEARBEITEN 2

Der folgende Code steht in 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

Sie können Ihr eigenes Dropdown-Bild verwenden. 

 

        <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