码迷,mamicode.com
首页 > 其他好文 > 详细

Spinner 简介

时间:2014-05-12 00:32:02      阅读:412      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   class   code   java   

Spinner 提供了快速从一个数据集中选择一个值的方法,默认显示的是当前选择的值,点击可以显示下拉列表,用户可以列表中选择一个新值。

spinner有两种显示模式dialog和dropdown,有不同的属性对应使用:

spinner源码中的片段

bubuko.com,布布扣
switch (mode) {
        case MODE_DIALOG: {
            mPopup = new DialogPopup();
            break;
        }

        case MODE_DROPDOWN: {
            DropdownPopup popup = new DropdownPopup(context,        attrs, defStyle);


......
      }
bubuko.com,布布扣

 

dialog 0 Spinner options will be presented to the user as a dialog window.
dropdown 1 Spinner options will be presented to the user as an inline dropdown anchored to the spinner widget itself.

 

首先可以在xml layout 中添加一个spinner

<Spinner
    android:id="@+id/planets_spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

 

sinner显示的数据用一个adapter来适配,和ListView,GradView,

可以在xml定义一个String 数组

bubuko.com,布布扣
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <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>
</resources>
bubuko.com,布布扣

 

在activity或fragment中使用代码完成绑定

ArrayAdapter中初始化的那个layout(自带布局文件是一个TextView id是“@android:id/text1”),是用来渲染spinner被选择的item的样式,而setDropDownResource这个layout(自带布局文件是一个CheckedTextView id是"@android:id/text1"),则是弹出框时用的item样式。

你可以通过这两个layout自定义样式,但是要注意第一个也就是ArrayAdapter的layout是显示的item的layout,而spinner本身还有个背景,直接设置spinner的背景即可。

bubuko.com,布布扣
Spinner spinner =(Spinner) findViewById(R.id.spinner);
//创建一个数组适配器,参数1为context上下文,参数2为绑定的数据,这里是一个数组,一般用List,参数3是系统默认的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设置样式
spinner.setAdapter(adapter);
bubuko.com,布布扣

 

当用户从下拉列表选择一个item时,spinner收到一个item已选择的事件,定义一个实现 AdapterView.OnItemSelectedListener接口的监听器,实现onItemSelected() 方法。

bubuko.com,布布扣
public class SpinnerActivity extends Activity implements OnItemSelectedListener {
    ...
    
    public void onItemSelected(AdapterView<?> parent, View view, 
            int pos, long id) {
        //获得绑定数据的一个item
        // parent.getItemAtPosition(pos)
    }

    public void onNothingSelected(AdapterView<?> parent) {
        // 没选择值时
    }
}
bubuko.com,布布扣

第一次进入activity时,会执行一次onItemSelected() 方法

 

最后设置监听器

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(this);

 

Spinner 简介,布布扣,bubuko.com

Spinner 简介

标签:android   style   blog   class   code   java   

原文地址:http://www.cnblogs.com/SunnyRainPlant/p/3721504.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!