Soru Spinner açılır simgesini değiştir


Tümü spinner açılır simgesini değiştirmek için bulduğum çözümler:

1. özel bir çekilebilir oluşturun

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="true" android:state_pressed="false" />
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="true" android:state_pressed="true" />
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="false" android:state_pressed="true" />
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" />
</selector>

2. Çekmeceyi arka plan olarak ayarlayın:

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:background="@drawable/custom_spinner_icon"
    android:gravity="center"
    android:paddingBottom="8dp"
    android:paddingTop="8dp"
    android:textColor="@color/textcolorprimary" />

Ve sonuç:

enter image description here

Gördüğünüz gibi bu simge kabul edilebilir bir çözüm değildir, çünkü simgenin doğru hizalanması ve gerilmesi gerekmez.

Simgeyi germek ve hizalamak için ne yapabilirim?

DÜZENLE

Henüz bir iş çözümü olmadığından, sorumu belirtmem gerek. Spinner'im standart temayı nasıl kullandı?

<Spinner
    android:id="@+id/products_download_spinner_language"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:gravity="center"
    android:paddingBottom="8dp"
    android:paddingTop="8dp"
    android:textColor="@color/textcolorprimary"
    android:theme="@android:style/Theme.Holo.Light.DarkActionBar" />

enter image description here

Ve istediğim her şey (sanırım pek fazla değil) oku değiştiriyor. Okunmak için sağ alt köşedeki o oku istemiyorum, bu okun dikey olarak sağda ortalanmış olarak görüntülenmesini istiyorum:

enter image description here

Ve şimdiye kadar denediğim her çözüm:

Spinner Açılır Ok

Spinner'da açılan ok nasıl ayarlanır?

sadece werent çalışma. Simgeleri gergiler ya da alt çizgi eksikti ya da başka bir şey tamamen yanlış gitti. Ben sadece başka bir ok istiyorum.


23
2018-05-24 11:00


Menşei


stackoverflow.com/questions/20422802/... - Malith Lakshan
Bunun henüz çözülmemiş olması çok saçma: / - ZooMagic


Cevaplar:


Kullanarak, aşağıdaki stili uygulayarak deneyin.

style="@style/SpinnerTheme"

//Spinner Tarzı:

<style name="SpinnerTheme" parent="android:Widget.Spinner">
    <item name="android:background">@drawable/bg_spinner</item>
</style>

//bg_spinner.xml   Arrow_down_gray'yı ok ile değiştirin

<?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="0.33dp" android:color="#0fb1fa" />

                    <corners android:radius="0dp" />

                    <padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" />
                </shape>
            </item>

            <item android:right="5dp">

                <bitmap android:gravity="center_vertical|right" android:src="@drawable/arrow_down_gray" />

            </item>

        </layer-list>

    </item>

</selector>

59
2018-05-26 12:55



Sağ üst ve sol sınır nasıl kaldırılır? sadece alt sınırına ihtiyacım var. - Mulgard
Arrow_down_gray'ın nerede olduğunu biliyor musun? Dosyayı arıyorum! Teşekkürler - androidguy
Bu kullanmak istediğiniz herhangi bir ok simgesi olabilir. Neyse, ben de ekledim, lütfen buraya bakın oi64.tinypic.com/2jb3b88.jpg - Pehlaj
@ user12345 cevabınız gerçekten faydalı .. - Rahul
@ Drawable / arrow_down_gray vektör ise ne olur? - Lester


Bunun için kullanabilirsiniz .9 Yama Görüntüsü ve sadece arka plana ayarlayın.

android:background="@drawable/spin"

İşte size .9patch resmi vereceğim. Bunu dene.

enter image description here enter image description here

Resmi sağ tıklayın ve Resmi Farklı kaydet 'i tıklayın.

resim adını şöyle ayarlayın: anyname.9.png ve vurun.

Zevk .. Mutlu Coading. :)


11
2018-05-24 11:59



Svg kullanıyorum. .9 Patch Image'den çok daha iyi. - Mulgard
Bence bu durumda bir .9patch görüntü bir svg daha iyidir. 9patch kullanarak, sol kenardan yalnızca saydam bir piksel uzatabilir ve görüntünün kalanını orijinal boyutta tutabilirsiniz. Svg kullanarak mümkün olup olmadığını bilmiyorum, ama kesinlikle bu cevabı deneyin. - Jofre Mateu
sağ ve teşekkürler @Jofre Mateu - Ronak Selarka
@Mulgard, orijinal uygulamanın ve kullanılan simgenin formatına bir göz atmalısınız. Yanlış değilse, varsayılan uygulama bir 9patch kullanır - Jofre Mateu


Bunun gibi özel arka plan oluşturmalısınız:

<?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="@drawable/drop_down"/> // you can place your dropdown image
            </item>
        </layer-list>
    </item>

</selector>

O zaman yarat stil Bu gibi eğirme için:

<style name="spinner_style">
        <item name="android:background">@drawable/YOURCUSTOMBACKGROUND</item>
        <item name="android:layout_marginLeft">5dp</item>
        <item name="android:layout_marginRight">5dp</item>
        <item name="android:layout_marginBottom">5dp</item>
</style>

bundan sonra bu stili topaç


3
2018-05-24 11:18



Bu çözüm işe yaramıyor. Döndürücüyü tıklayana kadar hiçbir simge gösterilmiyor. ve bundan sonra açılan menüde büyük bir açılır menü gösterilir. - Mulgard


Xml'de özel bir arka plan tanımlamayı denediniz mi? Okunuzu yapan Spinner arka plan genişliğini azaltmak gibi görünüyorsunuz.

Dikdörtgen arka plan ve özel ok simgenizle bir katman listesi tanımlayın:

    <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/color_white" />
            <corners android:radius="2.5dp" />
        </shape>
    </item>
    <item android:right="64dp">
         <bitmap android:gravity="right|center_vertical"  
             android:src="@drawable/custom_spinner_icon">
         </bitmap>
    </item>
</layer-list>

2
2018-05-26 15:37





Drop Down ICON Kullanarak HERHANGİ BİR İNDİRİMİ Kullanmadan

<?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" /><!--For gradient background-->

                <stroke android:width="1dp" android:color="#FFF" /><!--For Border background-->

                <corners android:radius="0dp" /><!--For background corner-->

                <padding android:bottom="3dp" android:left="3dp" android:right="6dp" android:top="3dp" /><!--For padding for all sides-->
            </shape>
        </item>
        <item>
            <bitmap android:gravity="center|right" android:src="@drawable/ic_down_arrow" /> // Replace with your Icon

        </item>
    </layer-list>
</item>


1
2018-06-02 14:58





dummy.xml (resim boyutunun daha az olması gerektiğini unutmayın)

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <layer-list android:opacity="transparent">
                <item android:width="60dp" android:gravity="left" android:start="20dp">
                    <bitmap  android:src="@drawable/down_button_dummy_dummy" android:gravity="left"/>
                </item>
            </layer-list>
        </item>
    </selector>

yerleşim dosyası snippet'i şöyle olmalı

<android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:cardUseCompatPadding="true"
        app:cardElevation="5dp"
        >
     <Spinner
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@drawable/dummy">

     </Spinner>
    </android.support.v7.widget.CardView>

sonuç düzenini görmek için tıklayın


0
2017-11-23 11:36