#一.概述
在这里给大家分享一个Android UI控件
Spinner
,下拉选择框,我是这么理解的,能力有限,写的不对的地方还请多多指教,不喜勿喷哦,kensoon918@163.comonly for feedback
#二.Spinner 简介
Google官方文档是这样介绍
Spinner
的,Spinner
提供了更快速的方法,让你在一个集合里面选择一个值。Spinner
只显示一个值,当你触摸它的时候其他可以选择的值将以下拉列表的形式展示出来,你可以选择任意一个下拉列表展示出来的值。 附上图片:
#三.添加 Spinner
像其他Anroid View一样,你有两种添加方式。一种就是在
Xml
文件里面添加,另一种就是通过代码动态添加。
在
Xml
里面添加Spinner
:
<Spinner
android:id="@+id/planets_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
>在`Xml` 中`Spinner` 其他属性:
>dropDown水平偏移量: `android:dropDownHorizontalOffset`
dropDown垂直偏移量: `android:dropDownVerticalOffset`
dropDownSelector:`android:dropDownSelector`
dropDown背景 : `android:popupBackground`
dropDown宽度:`android:dropDownWidth`
spinnerMode: `android:spinnerMode`
gravity:`android:gravity`
prompt : `android:prompt`
>可以通过如下的构造函数动态添加`Spinner`:
>`Spinner(Context context)`
`Spinner(Context context, int mode)`
`Spinner(Context context, AttributeSet attrs)`
`Spinner(Context context, AttributeSet attrs, int defStyleAttr)`
`Spinner(Context context, AttributeSet attrs, int defStyleAttr, int mode)`
`Spinner(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes, int mode)`
`Spinner(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes, int mode, Resources.Theme popupTheme)`
#三. 给`Spinner` 添加 `Adapter`
>添加完`Spinner`过后,你需要给`Spinner`添加一个`SpinnerAdapter`,Google文档介绍的`SpinnerAdapter`直接子类有:
>`ArrayAdapter<T>`
`BaseAdapter, CursorAdapter`
`ResourceCursorAdapter`
`SimpleAdapter`
`SimpleCursorAdapter`
`ThemedSpinnerAdapter`
>你只需要创建上面任意一个,然后添加给`Spinner`,例如:
>```java
//找到 Spinner
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
//items 数组
String[] arrays = new String[]{
"item1",
"item2",
"item3"
};
//ArrayAdapter 适配器
ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_dropdown_item, arrays);
//给Spinner 设置适配器
spinner.setAdapter(mAdapter);
#四. 给Spinner
设置监听器
最后一步当然是给
Spinner
设置监听器了,设置监听器的方法有很多,这里只给大家演示一种,如下:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//选择了
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
//没有选择
}
});
#五. 总结
> 总的来说`Spinner `是个不错的View,给本来就小的手机屏幕节约了不少的空间,这的推荐。如果要获得选中的值何以使用
```java
mSpinner.getSelectedItem().toString();