Android給我們提供了一個Spinner控件,這個控件主要就是一個列表,Spinner位於 android.widget包下,每次只顯示用戶選中的元素,當用戶再次點擊時,會彈出選擇列表供用戶選擇,而選擇列表中的元素同樣來自適配器。Spinner是View類得一個子類。
復制代碼
package com.yydcdut.spinnerstudy;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends Activity {
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spiiner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getApplicationContext(), android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.add("123");
adapter.add("321");
adapter.add("123321");
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Spinner spinner1 = (Spinner) parent;
String content = (String) spinner1.getItemAtPosition(position);// 取得與Spinner關聯的列表數據的指定位置的數據
Toast.makeText(getApplicationContext(),
"position-->" + position + "內容-->" + content,
Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO 自動生成的方法存根
}
});
}
}
復制代碼
接下來我們通過更換adapter.setDropDownViewResource(android.R.layout.test_list_item);裡面的xml參數來看一看彈出的樣式
AutoCompleteTextView
復制代碼
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] names = { "z11", "z22", "z33", "a44", "a55" };
AutoCompleteTextView auto = (AutoCompleteTextView) findViewById(R.id.auto);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, names);
auto.setAdapter(adapter);
}
}
復制代碼
AutoCompleteTextView是實現動態匹配輸入的內容。如google搜索引擎當輸入文本時可以根據內容顯示匹配的熱門信息。
雖然AutoCompleteTextView不是Android的常用控件,但是它的實用性還是很強的,具體的使用可以參考ApiDemos,對於基本的用法,它有很詳細的說明。但是這些例子遠遠無法滿足我們的需求,下面講一下幾個例子中沒有涉及到的屬性。
completionThreshold:它的值決定了你在AutoCompleteTextView至少輸入幾個字符,它才會具有自動提示的功能。另,默認最多提示20條。
dropDownAnchor:它的值是一個View的ID,指定後,AutoCompleteTextView會在這個View下彈出自動提示。
dropDownSelector:應該是設置自動提示的背景色之類的,沒有嘗試過,有待進一步考證。
dropDownWidth:設置自動提示列表的寬度。