Android中Spinner用法详解

 

java.lang.Object

android.view.View

        android.view.ViewGroup

                android.widget.AdapterView<T extends android.widget.Adapter>

                        android.widget.AbsSpinner

                                android.widget.Spinner

从上面的继承关系可以看出这个控件其实很像listview,加载的数据和listview很相似.

Spinner、listview、Gallery都继承了AbsSpinner,AbsSpinner继承了AdapterView,因此他也表现出AdapterView的特征:只要为AdapterView提供Adapter即可。

首先介绍些常用属性:

android:spinnerMode //显示模式 :dropdown和dialog两种

android:dropDownWidth="230dp"//显示弹出框的宽度

android:popupBackground="#66ccff"//显示弹出框的背景颜色

android:entries="@array/week"//添加XML布局

android:prompt //当显示模式为dialog时生效,作用为显示dialog的标题内容

 android:prompt 属性使用常见问题:

  • 设置之后不起作用:prompt属性只有在dialog状态才有用,所以要在xml中,将style设置为Widget.Spinner
  • prompt属性要用string下资源,不支持字符直接输入,否则会报错误

两种写法

  • XML文件中设置数据源
<Spinner
        android:id="@+id/spinner_arrays"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="50dp"
        android:dropDownWidth="230dp"
        android:entries="@array/week"
        android:popupBackground="#66ccff"
        android:spinnerMode="dropdown"></Spinner>
values/arrays.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="week">
        <item >星期一</item>
        <item >星期二</item>
        <item >星期三</item>
        <item >星期四</item>
        <item >星期五</item>
        <item >星期六</item>
        <item >星期天</item>
    </string-array>
</resources>
  • 代码中设置数据源
  <Spinner
        android:id="@+id/spinner_code"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spinnerMode="dropdown"></Spinner>
 codeSp = (Spinner) findViewById(R.id.spinner_code);
        final String[] arr={"深圳","上海","北京","山西"};
        //创建ArrayAdapter对象
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,arr);
        codeSp.setAdapter(adapter);
        /**选项选择监听*/
        codeSp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(SpinnerTestActivity.this, "点击了" + arr[position], Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

XML特点是方便快捷,缺点是不能动态改变要显示的数据,使用适配器特点是灵活多变,针对项目需求来选择.

 

 

demo下载地址

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值