2012-01-23 14 views
7

Spinner numaramın soldaki beyaz yazıyla siyah bir degrade arka plana ve sağdaki bir seçici simgesi olmasını istiyorum (beyaz aşağı dönük üçgen). Gördüğüm kadarıyla orada bu konuda başladıktan sonraki iki yolu vardır: benim Spinner mükemmel görünmesine neden olabilir bir xml çekilebilir kaynağa arka plan ayarlarsanızKöşeli, köşeli ve seçici bir simgeyle özel Döndürücü

  1. ama sonra nedense beyaz üçgen eklemeniz gerekir sağ Ben konuda nasıl bilmiyorum hangi:

    <?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
        <shape> 
         <gradient 
          android:startColor="#343434" 
          android:endColor="#171717" 
          android:angle="270" /> 
         <stroke 
          android:width="1dp" 
          android:color="#ffffff" /> 
         <corners 
          android:radius="4dp" /> 
         <padding 
          android:left="3dp" 
          android:top="3dp" 
          android:right="3dp" 
          android:bottom="3dp" /> 
        </shape> 
    </item> 
    </selector> 
    
  2. benim üçgeni içerir ve daha sonra köşeleri yuvarlamak ve görüntüye felç eklemek için xml kullanmak 9-yama görüntüsü oluşturmak. Bunun gitmek vardı ama o iş yapmak açamadı var:

    <?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
        <item android:drawable="@drawable/spinnerblack" > 
         <stroke 
          android:width="1dp" 
          android:color="#ffffff" /> 
         <corners 
          android:radius="3dp" /> 
         <padding 
          android:left="3dp" 
          android:top="3dp" 
          android:right="3dp" 
          android:bottom="3dp" /> 
        </item> 
    </selector> 
    

Birisi yöntemle 1 için yapabileceğim ya da ne ben yöntemle 2 yanlış yaptıklarını söyler misiniz ya? 9-yama görüntüsündeki strok ve yuvarlatılmış köşeleri eklememeyi tercih ederim çünkü ben hiç iyi göründüğümü düşünmüyorum. Ayrıca, yöntem 2'ye yöntem 1'i tercih ederim. Herhangi bir yardım çok takdir edildi.

cevap

11

Uygulamamdaki 1. yönteme benzer bir şey yaptım. Temelde bir katman-listeyle seçici birleştirmek gerekir:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <layer-list> 
      <item> 
       <shape> 
        <gradient 
         android:startColor="#343434" 
         android:endColor="#171717" 
         android:angle="270" /> 
        <stroke 
         android:width="1dp" 
         android:color="#ffffff" /> 
        <corners 
         android:radius="4dp" /> 
        <padding 
         android:left="3dp" 
         android:top="3dp" 
         android:right="3dp" 
         android:bottom="3dp" /> 
       </shape> 
      </item> 
      <item 
       android:top="12dp" 
       android:right="15dp"> 
       <bitmap android:src="@drawable/arrow_bitmap" 
         android:gravity="top|right" /> 
      </item> 
     </layer-list> 
    </item> 
</selector> 

benim xml ben de (yani onun alfa 0 olarak ayarlanır) görünmez bir <shape> içeren üçüncü bir katman ekledi ama dolgu ekler.

+0

Teşekkürler! Bu şekilde yapmak bir bitmap kullanmalı mıyım? Sadece düz bir beyaz üçgen istediğim gibi şeffaf bir arka plana ihtiyacım var, bu yüzden bir .png kullanmak istiyorum. Gideceğim ve neler yapabileceğimi göreceğim. –

+0

.png ile çalışıyor, mükemmel, çok teşekkürler! –

+0

@Aaron Klotz Benim durumumda, ok görüntüsü sağ üstte çiziliyor. Bunun yerine okları doğru padding.but ile görmemek istiyorum. –