Можно ли заполнить параметры Spinner прямо в макете XML? Эта страница предлагает мне использовать ArrayAdapter? Кажется неловким, не в состоянии сделать это ..
246
Можно ли заполнить параметры Spinner прямо в макете XML? Эта страница предлагает мне использовать ArrayAdapter? Кажется неловким, не в состоянии сделать это ..
Я не уверен в этом, но попробуй.
В вашем strings.xml определите:
<string-array name="array_name">
<item>Array Item One</item>
<item>Array Item Two</item>
<item>Array Item Three</item>
</string-array>
В вашем макете:
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/array_name"
/>
Я слышал, что это не всегда работает на дизайнера, но компилируется нормально.
android:entryValues="@array/array_name_values"
.drawSelectorOnTop
Spinner не поддерживает, так как нет другого отдельного селектора, кроме самого Spinner. Решение определенно работает, хотя, спасибо!android:entryValues
. ListPreference поддерживает это.Spinner
иAbsSpinner
. И в API 19, и в 23 конструктор AbsSpinner использует,R.styleable.AbsSpinner_entries
но нигде не используетentryValues
. Это просто совпадение, что ваш код делал то, что вы ожидали. (Или, может быть, ROM некоторых производителей имеют собственную реализацию Spinner, которая фактически обрабатываетandroid:entryValues
?)Определите это в файле String.xml и назовите массив, который вы хотите, например, «Вес»
и этот код в вашем layout.xml
В вашем Java-файле
getActivity
используется фрагмент; если вы пишете этот код в действии, то удалитеgetActivity
.источник
Относительно первого комментария: если вы сделаете это, вы получите ошибку (в Android Studio). Это связано с тем, что он находится вне пространства имен Android. Если вы не знаете, как исправить эту ошибку, посмотрите пример ниже. Надеюсь это поможет!
Пример -Перед:
Пример - после:
источник
string-array
чтобы он имелname
атрибут, и не распознает егоandroid:name
.