É possível preencher as opções de um Spinner diretamente no xml de layout? Esta página sugere que eu devo usar um ArrayAdapter? Parece estranho não poder fazer isso ..
246
É possível preencher as opções de um Spinner diretamente no xml de layout? Esta página sugere que eu devo usar um ArrayAdapter? Parece estranho não poder fazer isso ..
Não tenho certeza disso, mas tente.
Em seu strings.xml, defina:
<string-array name="array_name">
<item>Array Item One</item>
<item>Array Item Two</item>
<item>Array Item Three</item>
</string-array>
No seu layout:
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/array_name"
/>
Ouvi dizer que isso nem sempre funciona no designer, mas compila bem.
android:entryValues="@array/array_name_values"
.drawSelectorOnTop
pois não há um seletor separado que não seja o próprio Spinner. A solução definitivamente funciona, obrigado!android:entryValues
. ListPreference suporta.Spinner
eAbsSpinner
. Nas API 19 e 23, o construtor AbsSpinner faz uso,R.styleable.AbsSpinner_entries
mas em nenhum lugar ele usaentryValues
. É apenas uma coincidência que seu código esteja fazendo o que você esperava. (Ou talvez ROMs de alguns fabricantes têm uma implementação Spinner personalizado que realmente lida comandroid:entryValues
?)Defina isso no seu arquivo String.xml e nomeie a matriz como desejar, como "Peso"
e esse código no seu layout.xml
No seu arquivo java,
getActivity
é usado em fragmento; se você escrever esse código em atividade, remova-ogetActivity
.fonte
Em relação ao primeiro comentário: Se você fizer isso, receberá um erro (no Android Studio). Isso se deve ao fato de estar fora do namespace do Android. Se você não sabe como corrigir esse erro, veja o exemplo abaixo. Espero que isto ajude!
Exemplo -Antes:
Exemplo - Depois:
fonte
string-array
tenha umname
atributo e não o reconheceandroid:name
.