Os controles giratórios oferecem uma forma rápida de selecionar um valor de um conjunto. No estado padrão, um ícone de carregamento mostra o valor selecionado no momento. Tocar no ícone de carregamento mostra um menu com todos os outros valores que o usuário pode selecionar.
![](https://developer.android.google.cn/static/images/ui/spinner.png?authuser=5&hl=pt)
Você pode adicionar um ícone de carregamento ao layout com o objeto
Spinner
, o que geralmente é feito no layout XML com um
elemento <Spinner>
. Isso é mostrado neste
exemplo:
<Spinner android:id="@+id/planets_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />
Para preencher o ícone de carregamento com uma lista de opções, especifique um
SpinnerAdapter
no código-fonte
Activity
ou
Fragment
.
Se você estiver usando componentes do Material Design,
os menus suspensos
expostos são equivalentes a um Spinner
.
Preencher o ícone de carregamento com opções do usuário
As opções fornecidas para o ícone de carregamento podem vir de qualquer origem, mas
precisam ser fornecidas por meio de um SpinnerAdapter
, como um
ArrayAdapter
,
se as opções estiverem disponíveis em uma matriz, ou um
CursorAdapter
se estiverem disponíveis em uma consulta de banco de dados.
Por exemplo, se as opções disponíveis para o ícone de carregamento forem predeterminadas, você poderá fornecê-las com uma matriz de strings definida em um arquivo de recursos de string:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="planets_array"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> <item>Mars</item> <item>Jupiter</item> <item>Saturn</item> <item>Uranus</item> <item>Neptune</item> </string-array> </resources>
Com uma matriz como essa, é possível usar o seguinte código no
Activity
ou Fragment
para fornecer a matriz ao ícone de carregamento
usando uma instância de ArrayAdapter
:
Kotlin
val spinner: Spinner = findViewById(R.id.planets_spinner) // Create an ArrayAdapter using the string array and a default spinner layout. ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item ).also { adapter -> // Specify the layout to use when the list of choices appears. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) // Apply the adapter to the spinner. spinner.adapter = adapter }
Java
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); // Create an ArrayAdapter using the string array and a default spinner layout. ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item ); // Specify the layout to use when the list of choices appears. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Apply the adapter to the spinner. spinner.setAdapter(adapter);
O método
createFromResource()
permite criar um ArrayAdapter
usando a matriz de strings. O
terceiro argumento para esse método é um recurso de layout que define como a
opção selecionada aparece no controle giratório. A plataforma fornece o
layout
simple_spinner_item
. Esse é o layout padrão, a menos que você queira definir seu próprio layout para
a aparência do ícone de carregamento.
Chame
setDropDownViewResource(int)
para especificar o layout que o adaptador usa para mostrar a lista de opções do ícone de carregamento.
simple_spinner_dropdown_item
é outro layout padrão definido pela plataforma.
Chame
setAdapter()
para aplicar o adaptador à Spinner
.
Responder às seleções do usuário
Quando o usuário seleciona um item no menu do ícone de carregamento, o objeto
Spinner
recebe um evento selecionado no item.
Para definir o manipulador de eventos de seleção para um ícone de carregamento, implemente a interface
AdapterView.OnItemSelectedListener
e o método de callback
onItemSelected()
correspondente. Por exemplo, veja uma implementação da interface em um
Activity
:
Kotlin
class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener { ... override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } override fun onNothingSelected(parent: AdapterView<*>) { // Another interface callback. } }
Java
public class SpinnerActivity extends Activity implements OnItemSelectedListener { ... public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } public void onNothingSelected(AdapterView<?> parent) { // Another interface callback. } }
A
interface AdapterView.OnItemSelectedListener
requer os métodos de callback
onItemSelected()
e
onNothingSelected()
.
Especifique a implementação da interface chamando
setOnItemSelectedListener()
:
Kotlin
val spinner: Spinner = findViewById(R.id.planets_spinner) spinner.onItemSelectedListener = this
Java
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); spinner.setOnItemSelectedListener(this);
Se você implementar a interface AdapterView.OnItemSelectedListener
com sua Activity
ou Fragment
, como no exemplo anterior, poderá transmitir this
como a instância da interface.