Spinner提供了从一个数据集合中快速选择一项值的办法。默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner选择一个新值。
上图显示的是Spinner常见的样式。这篇文章中我将讨论1.Spinner的基本用法 2.设置Spinner的Adapter (arrayadapter 和自定义BaseAdapter)3.Spinner的菜单显示方式 4.Spinner的xml属性
最简单的Spinner
在布局文件中添加Spinner控件
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <Spinner
- android:id="@+id/spinner1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:entries="@array/languages"
- />
- </LinearLayout>
其中android:entries="@array/languages"表示Spinner的数据集合是从资源数组languages中获取的,languages数组资源定义在values/arrays.xml中:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string-array name="languages">
- <item>c语言</item>
- <item>java </item>
- <item>php</item>
- <item>xml</item>
- <item>html</item>
- </string-array>
- </resources>
如果你不需要对Spinner的选择事件做响应,那么一个完整的Spinner使用流程就结束了。
运行结果:
当然,一般情况下我们是需要响应Spinner选择事件的,可以通过OnItemSelectedListener的回调方法实现
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- Spinner spinner = (Spinner) findViewById(R.id.spinner1);
- spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view,
- int pos, long id) {
- String[] languages = getResources().getStringArray(R.arr