Czy możliwe jest wypełnienie opcji Spinnera bezpośrednio w układzie xml? Ta strona sugeruje, że powinienem użyć ArrayAdapter? Wydaje się dziwne, że nie mogę tego zrobić ...
246
Nie jestem tego pewien, ale spróbuj.
W pliku strings.xml zdefiniuj:
<string-array name="array_name">
<item>Array Item One</item>
<item>Array Item Two</item>
<item>Array Item Three</item>
</string-array>
W twoim układzie:
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/array_name"
/>
Słyszałem, że nie zawsze działa to na projektanta, ale dobrze się kompiluje.
android:entryValues="@array/array_name_values"
.drawSelectorOnTop
ponieważ nie ma osobnego selektora oprócz samego Błystka. Rozwiązanie zdecydowanie działa, dzięki!android:entryValues
. ListPreference obsługuje to.Spinner
iAbsSpinner
. Zarówno w API 19, jak i 23 konstruktor AbsSpinner korzysta,R.styleable.AbsSpinner_entries
ale nigdzie go nie używaentryValues
. To tylko zbieg okoliczności, że Twój kod działał zgodnie z oczekiwaniami. (A może ROM niektórych producentów ma niestandardową implementację Spinnera, która faktycznie obsługujeandroid:entryValues
?)Zdefiniuj to w pliku String.xml i nazwij tablicę, co chcesz, na przykład „Waga”
i ten kod w pliku layout.xml
W twoim pliku Java
getActivity
jest używany we fragmentach; jeśli napiszesz ten kod w działaniu, usuńgetActivity
.źródło
W odniesieniu do pierwszego komentarza: jeśli to zrobisz, pojawi się błąd (w Android Studio). Chodzi o to, że jest poza obszarem nazw Androida. Jeśli nie wiesz, jak naprawić ten błąd, sprawdź poniższy przykład. Mam nadzieję że to pomoże!
Przykład -Przed:
Przykład - po:
źródło
string-array
aby miałname
atrybut i nie rozpoznaje tegoandroid:name
.