Android SDK Tutorials系列 - Hello Views - Spinner

Spinner

Spinner是个窗口小部件,像一个下拉选择菜单。

本教程里,将创建一个Spinner小部件来显示一个行星列表。当选择了某一项,会弹出一个文本消息框显示选中的项。

  1. 创建工程:HelloSpinner.
  2. 打开res/layout/main.xml 并修改如下:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:padding="10dip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dip"
            android:text="@string/planet_prompt"
        />
        <Spinner 
            android:id="@+id/spinner"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:prompt="@string/planet_prompt"
        />
    </LinearLayout>

    TextViewandroid:text属性和Spinnerandroid:prompt属性引用了相同的字符串资源,对于TextView来说,它是个标题;而对Spinner来说,它是下拉选择框上的一个提示。

  3. 打开res/values/ 下面的strings.xml 文件,在里面插入以下内容(在<resources></resources>之间):
        <string name="planet_prompt">Choose a planet</string>
        <string-array name="planets_array">
            <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>

    <string> 标签定义了TextView Spinner 都要用到的字符串资源。<string-array>定义了一个字符串的列表,将显示在Spinner的下拉框里。

  4. 打开HelloSpinner.java 并修改onCreate()方法如下:
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.planets_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
    }

    在加载了main.xml布局文件之后,通过findViewById(int)方法获得了对Spinner的引用。再通过createFromResource() 方法创建一个ArrayAdpater,用来将字符串数组资源绑定到Spinner上(这就是为什么字符串数组的内容会显示在Spinner的下拉框里)。资源ID R.array.planets_array 用来引用在前面strings.xml里定义的字符串数组资源,android.R.layout.simple_spinner_item用来引用系统自定义的一个标准的Spinner外观。再调用setDropDownViewResource(int) 方法来定义Spinner下拉框里每一项的外观(simple_spinner_dropdown_item 是另一个系统自定义的标准外观)。

  5. 现在创建一个内嵌类来实现AdapterView.OnItemSelectedListener监听器,提供一个回调函数来处理Spinner的选择事件。这个类内容如下:
    public class MyOnItemSelectedListener implements OnItemSelectedListener {
    
        public void onItemSelected(AdapterView<?> parent,
            View view, int pos, long id) {
          Toast.makeText(parent.getContext(), "The planet is " +
              parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
        }
    
        public void onNothingSelected(AdapterView parent) {
          // Do nothing.
        }
    }

    AdapterView.OnItemSelectedListener 监听器需要实现onItemSelected() 和 onNothingSelected() 两个回调函数,前者处理下拉框里的一项被选中的情况,弹出一个文本框显示被选中的项;后者处理下拉框打开并关闭后什么也没选的情况,这时什么也没发生,所以什么也不做。

  6. 现在给Spinner设置上面实现的监听器。在onCreate()末尾添加下面的内容:
    spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());

    创建一个匿名的MyOnItemSelectedListener 实例并设置为Spinner的监听器。

  7. 运行应用。

界面看起来应该像这样:

Hello spinner




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值