2014-05-12 11 views
5

Witam Próbuję dodać lewy drawable w Spinner, ale nie znalazłem żadnych properer dla tego, jak zrobić to samo w EditText przy użyciu android:drawableLeft="@drawable/password_drawable". Czy jest jakiś prawidłowy sposób na osiągnięcie tego samego w systemie Spinner w systemie Android.Jak dodać lewy drawable w Spinner Zobacz w Androidzie

Tu, w moim przypadku nie powinno być pozostawione rozciągliwej tylko ten stan, który dałem na zrzucie ekranu, gdy użytkownik kliknie na Spinner nie chcę mieć lewo rozciągliwej tam w otwartym liście rozwijanej w Spinner

staram się jak ta, gdzie nie ma takiego atrybutu

<Spinner 
    android:id="@+id/selectSpinner" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="@dimen/sign_up_views_vertical_top_margin" 
    android:background="@drawable/edittext_border" 
    /> 

chcę coś jak poniżej zrzucie

enter image description here

Obecnie wygląda jak poniżej

enter image description here

i kiedy ustawić tło na Spinner potem to wygląda

<Spinner 
    android:id="@+id/selectSpinner" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="@dimen/sign_up_views_vertical_top_margin" 
    android:background="@drawable/selectone_drawable" 
    android:entries="@array/select_type" /> 

enter image description here

góry dzięki

+0

Można ustawić tło dla turbinki. android: background = "@ drawable/your_drawable" – Sripathi

+0

@ Sripathi To nie zadziałało, ustawienie tła nie jest sposobem IMO, ponieważ ustawi ten obraz tła na kompletnej tarczy –

+0

Teraz ustawiasz blok strzałki sam jako prawe tło (pole zawiera strzałkę w dół)? Użyj dziewięciu łatek, w przeciwnym razie możesz zmienić obraz png jako pudełko (np. Edittext) posiadające kwadrat po lewej stronie (pożądany układ spinnera). – Sripathi

Odpowiedz

4

Tworzenie obraz dziewięciu łatek i ustawić go jako tło wirowania ner, a następnie dodaj lewą podkładkę, powinna wystarczyć.

+0

Nie, to nie działało dla mnie, zobacz moje zaktualizowane pytanie. Dodałem zrzut ekranu –

+2

Utwórz obraz dziewięciu łat i ustaw go jako tło. To powinno działać. –

+0

Zrobię to dla ciebie, kiedy wrócę do domu, nie mogę tego teraz zrobić w pracy. Możesz też spróbować zrobić to sam, wykonując kilka badań na temat obrazów z dziewięcioma łatami, jest to naprawdę użyteczne w każdym projekcie Androida :) –

2

Jako Mark Said, powinieneś umieścić następujący obraz jako tło przędzarki i wziąć wymaganą lewą podkładkę, aby tekst był zaraz po obrazie strzałki.

enter image description here

Po jakiś kod, aby można zrozumieć;)

<Spinner 
    android:id="@+id/selectSpinner" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="@dimen/sign_up_views_vertical_top_margin" 
    android:background="@drawable/the_attached_drawable" 
    android:paddingLeft="@dimen/required_padding_for_each_screen_size" 
    android:entries="@array/select_type" /> 
+0

+1 Dziękuję Ładna odpowiedź, zadziałało :) –

9

tworzyć rozciągliwej xml @ rozciągliwej/gradient_spinner `

<?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="@color/myTextPrimaryColor" android:startColor="@color/myTextPrimaryColor" android:type="linear" /> 

      <stroke android:width="1dp" android:color="@color/bg_eo" /> 

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

      <padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" /> 
     </shape></item> 
     <item ><bitmap android:gravity="right|center" android:src="@drawable/expnd" /> 
     </item> 
    </layer-list></item> 

</selector> ` 

zestaw spinner tło android tło = "@ drawable/gradient_spinner"

+0

Dziękuję! To zadziałało dla mnie, po zmianie grawitacji na "left | center". :) –

1

Spróbuj tego,

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
      if(view!=null) { 
       ((TextView) view).setPadding(0, 0, 0, 0);//remove extra padding 
       ((TextView)view) .setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(context, R.drawable.your_image), null, null, null); 
       ((TextView) view).setCompoundDrawablePadding(20);// to set drawablePadding 
      } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 

     } 
    }); 
0

layout looks like this

dummy.xml

<?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:gravity="left" android:width="100dp" 
      android:end="300dp"> 
       <shape> 
        <solid android:color="#269cf7"> 

        </solid> 
       </shape> 
      </item> 
      <item android:gravity="right" android:width="300dp" android:start="100dp"> 
       <shape> 
        <solid android:color="@color/transparent"> 

        </solid> 
       </shape> 
      </item> 
      <item android:width="100dp" android:end="300dp"> 
       <bitmap android:src="@drawable/arrow_bottom" android:gravity="center"/> 
      </item> 
     </layer-list> 
    </item> 
</selector> 

w pliku layoutu dodać ten kod

<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> 
Powiązane problemy