2012-12-10 7 views
6

Próbuję naśladować nowszą wersję przędzarki Ice Cream Sandwhich, która wygląda raczej jak lista rozwijana niż pop-art w górę okna dialogowego. See this link, aby zorientować się, o czym mówię. Przeczytałem kilka postów stwierdzających, że używają ActionBarSherlock, aby uzyskać pożądany efekt. Jest to jednak stworzone do użycia tylko na pasku akcji, więc w jaki sposób wyłączyć narzędzie ICS Spinner z paska akcji?ICS Spinner ("drop-down" zamiast okna dialogowego) w starszych wersjach Androida

There is a pretty good answer here, Jednak czuję, że to trochę przesada? Czy istnieje prostszy sposób?

Odpowiedz

17

Po pierwsze, odwołałem się do this link, czy mam odpowiedzieć na własne pytanie. Czułem, że może to być bardzo przydatne dla kogoś, kto boryka się z podobnym problemem, więc przepraszam, jeśli nie jest to właściwa etykieta na tej stronie (aby odpowiedzieć na własne pytanie).

Teraz natknąłem się na próbę znalezienia rozwiązania tego problemu, a dzięki próbom i błędom udało mi się. Tak więc, kiedy już ActionBarSherlock SDK pobrać i skonfigurować w swoim projekcie stworzyć układ, który będzie włączenie tarczy:

<com.actionbarsherlock.internal.widget.IcsSpinner 
      android:id="@+id/spinner" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/title" 
      android:layout_margin="10sp" 
      android:layout_centerHorizontal="true" 
      android:textSize="18sp" /> 

Powyższy kod będzie używać wersji ICS z wirówki, która jest w bibliotece ActionBarSherlock. Następnie w swojej działalności zadeklaruj i stwórz instancję spinnera (używając rzutowania). Należy jednak pamiętać, że nie wolno używać normalnego klasę Spinner, należy użyć klasy IcsSpinner znaleźć w bibliotece ActionBarSherlock:

IcsSpinner spinner = (IcsSpinner)findViewById(R.id.spinner); 

Teraz należy utworzyć adapter tak samo jak dla normalnego Spinner, tak:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item, elements); 
spinner.setAdapter(adapter); 

Na koniec trzeba ustawić onItemSelectedListener. Jedyną główną różnicą jest to, że używasz IcsAdapterView.OnItemSelectedListener zamiast po prostu OnItemSelectedListener:

spinner.setOnItemSelectedListener(new IcsAdapterView.OnItemSelectedListener(){ 
    @Override 
    public void onItemSelected(IcsAdapterView<?> parent, View view, int position, long id){ 
    } 
    @Override 
    public void onNothingSelected(IcsAdapterView<?> parent){ 
    } 
}); 

I to wszystko. To naprawdę niewiele różni się od zwykłego używania obiektu typu spinner. Tak proste jak to było, zajęło mi trochę czasu, aby dowiedzieć się, więc mam nadzieję, że jest to przydatne dla kogoś.

O tak, i nie zapomnij użyć motywu ActionBarSherlock, tak jak (w manifeście):

android:theme="@style/Theme.Sherlock" 
+3

+1 za dobrą odpowiedź. – Ahmad

+2

Jakikolwiek sposób używać ICS jak spinner z biblioteką wsparcia Android? Nie używam ActionBarSherlock. –

+1

@sureshcheemalamudi [generator kolorów holo] (http://android-holo-colors.com/) zrobi, jedyną różnicą jest tło, ics spinner jest bez podkreślenia – oscarthecat

Powiązane problemy