IT技术互动交流平台

AndroidSpinner控件详解

来源:IT165收集  发布日期:2016-06-27 21:13:36

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.array.languages);
                Toast.makeText(MainActivity.this, '你点击的是:'+languages[pos], 2000).show();
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                // Another interface callback
            }
        });
    }

}

上面的Spinner看起来非常漂亮,不过它并不是总是如此,刚刚看到的是在android:Theme.Holo.Light主题下的效果,同样的代码如果在android:Theme.Light下面就会变得很丑。

这里写图片描述 这里写图片描述

想必这也是很多