Trình đơn vòng quay (spinner) giúp bạn dễ dàng chọn một giá trị trong một nhóm. Theo mặc định trạng thái, một vòng quay sẽ cho thấy giá trị hiện được chọn. Nhấn vào biểu tượng vòng quay sẽ hiển thị một trình đơn hiển thị tất cả các giá trị khác mà người dùng có thể chọn.
![](https://developer.android.com/static/images/ui/spinner.png?authuser=9&hl=vi)
Bạn có thể thêm một vòng quay vào bố cục bằng
Spinner
mà bạn thường làm trong bố cục XML bằng cách sử dụng
Phần tử <Spinner>
. Thông tin này được thể hiện trong
ví dụ:
<Spinner android:id="@+id/planets_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />
Để điền danh sách các lựa chọn vào vòng quay, hãy chỉ định một
SpinnerAdapter
trong
Activity
hoặc
Fragment
mã nguồn.
Nếu bạn đang dùng Thành phần Material Design,
hiển thị
trình đơn thả xuống tương đương với Spinner
.
Điền các lựa chọn của người dùng vào vòng quay
Các lựa chọn bạn cung cấp cho vòng quay có thể đến từ bất kỳ nguồn nào, nhưng bạn
phải cung cấp thông qua SpinnerAdapter
, chẳng hạn như
ArrayAdapter
nếu các lựa chọn có sẵn trong một mảng hoặc
CursorAdapter
nếu các lựa chọn có sẵn từ truy vấn cơ sở dữ liệu.
Ví dụ: nếu các lựa chọn có sẵn cho vòng quay của bạn được xác định trước, bạn có thể cung cấp cho chúng một mảng chuỗi được xác định trong tài nguyên chuỗi tệp:
<?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>
Với một mảng như thế này, bạn có thể sử dụng mã sau trong
Activity
hoặc Fragment
để cung cấp vòng quay
bằng cách sử dụng bản sao của 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);
Chiến lược phát hành đĩa đơn
createFromResource()
cho phép bạn tạo một ArrayAdapter
từ mảng chuỗi. Chiến lược phát hành đĩa đơn
Đối số thứ ba cho phương thức này là một tài nguyên bố cục xác định cách
lựa chọn đã chọn sẽ xuất hiện trong điều khiển vòng quay. Nền tảng này cung cấp
simple_spinner_item
của bạn. Đây là bố cục mặc định, trừ phi bạn muốn xác định bố cục của riêng mình cho
giao diện của vòng quay.
Gọi điện
setDropDownViewResource(int)
để chỉ định bố cục mà bộ chuyển đổi sử dụng để hiển thị danh sách các lựa chọn vòng quay.
simple_spinner_dropdown_item
là một bố cục chuẩn khác do nền tảng xác định.
Gọi điện
setAdapter()
để áp dụng trình chuyển đổi cho Spinner
.
Phản hồi lựa chọn của người dùng
Khi người dùng chọn một mục từ trình đơn của vòng quay,
Spinner
đối tượng
nhận được sự kiện đã chọn trên mặt hàng.
Để xác định trình xử lý sự kiện lựa chọn cho một vòng quay, hãy triển khai
AdapterView.OnItemSelectedListener
và giao diện tương ứng
onItemSelected()
phương thức gọi lại. Ví dụ: dưới đây là cách triển khai giao diện trong một
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. } }
Chiến lược phát hành đĩa đơn
Giao diện AdapterView.OnItemSelectedListener
yêu cầu
onItemSelected()
và
onNothingSelected()
phương thức gọi lại.
Chỉ định cách triển khai giao diện bằng cách gọi
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);
Nếu bạn triển khai AdapterView.OnItemSelectedListener
với Activity
hoặc Fragment
của bạn, như trong
ví dụ trước, bạn có thể truyền this
làm thực thể giao diện.