本文介绍Spinner控件。下面的内容都是参考"Spinner测试代码"进行的讲解,感兴趣的可以进行测试验证。
1. Spinner基本使用
1.1 Spinner的父类
下面是Spinner的继承关系图
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.AdapterView
↳ android.widget.AbsSpinner
↳ android.widget.Spinner
1.2 Spinner基本定义
<Spinner
android:id="@+id/spin_planet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:prompt="@string/planet"
/>
1.3 Spinner列表
下面介绍通过内部资源定义Spinner下拉列表选择内容的方法。建立res/arrays.xml,并输入以下内容:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="array_planets">
<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>
然后再初始化Spinner时,调用该资源。
public class SpinnerTest extends Activity {
private Spinner mSpinPlanet;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 设置Spinner
mSpinPlanet = (Spinner) findViewById(R.id.spin_planet);
// 设置ArrayAdapter对应的数据和布局
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.array_planets, android.R.layout.simple_spinner_item);
// 设置ArrayAdapter的下拉布局
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// 将该ArrayAdapter赋值给Spinner
mSpinPlanet.setAdapter(adapter);
// 设置选择监听函数
mSpinPlanet.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
// 获取array_planets获取对应的String数组
String[] planets = getResources().getStringArray(R.array.array_planets);
// 获取pos对应的字符串
String planet = planets[pos];
// 提示
showToast("select "+planet);
}
// Spinner未选择的回调函数
@Override
public void onNothingSelected(AdapterView<?> parent) {
showToast("Nothing Selected!");
}
});
}
private void showToast(CharSequence msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
}