Android开发小知识-Spinner控件使用

Spinner控件是一个下拉选择型控件,效果如图:
这里写图片描述
下拉后效果如图:
这里写图片描述
下面直接来个例子:
1、在布局文件中添加一个Spinner控件

<Spinner
     android:id="@+id/spinner"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginTop="30dp"
     android:layout_centerHorizontal="true"
     android:dropDownSelector="@color/colorPrimaryDark"
     ></Spinner>

2、准备要在该控件显示的数组,每一行会显示数组中的一项。这里将数组定义在strings.xml文件中。
当然这里把数据写死了,我们可以定义一个list,将要显示的数据变为可控的。

<string-array name="spinner_data">
    <item>春</item>
    <item>夏</item>
    <item>秋</item>
    <item>冬</item>
</string-array>

3、在Activity中找到该控件,初始化后设置Adapter和监听

/**
 * 实现了AdapterView.OnItemSelectedListener接口,处理  选择下拉列表中项目  这一动作
 */
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
    private Spinner spinner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner = (Spinner) findViewById(R.id.spinner);
        //生成适配器
        //参数详解
        //第一个 this  上下文对象
        //第二个 R.array.spinner_data 数组,这里用的是在strings.xml文件中定义好的数组
        //第三个 android.R.layout.simple_spinner_item 每一项的显示布局文件,这里使用安卓提供的,我们也可以自己生成该文件
        ArrayAdapter arrayAdapter = ArrayAdapter.createFromResource(this,R.array.spinner_data,android.R.layout.simple_spinner_item);
        //设置每一个选项的视图
        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //设置是配置
        spinner.setAdapter(arrayAdapter);
        //设置监听器
        spinner.setOnItemSelectedListener(this);
    }
    //实现onItemSelected方法,当我们选择一个选项时,会调用这个方法
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        //弹出提示框
        Toast.makeText(this,parent.getItemAtPosition(position).toString() , Toast.LENGTH_LONG).show();
    }
    //测试时没有看到该方法的提示框(-_-)
    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        Toast.makeText(this, "你没有选择任何选项", Toast.LENGTH_LONG).show();
    }
}

好了,先去看看效果吧!
4、接下来演示使用自己定义的布局来显示每一项的数据
a)定义一个布局文件spinner_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!--添加一个TextView,并设置ID属性-->
    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="10dp"
        android:layout_marginRight="5dp"
        android:layout_marginBottom="10dp"
        android:textAlignment="center"/>
</LinearLayout>

b)修改Activity中代码
删除以下代码:

ArrayAdapter arrayAdapter = ArrayAdapter.createFromResource(this,R.array.spinner_data,android.R.layout.simple_spinner_item);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

添加以下代码

 //设置要显示的数据
 List<String> data = new ArrayList<>();
 data.add("北京");
 data.add("上海");
 data.add("广州");
 data.add("深圳");
 //参数详解
 //第一个 this 上下文对象
 //第二个 R.layout.spinner_item 显示每一项的布局文件
 //第三个 R.id.text 布局文件中用来显示每一项内容的控件id
 //第四个 data 需要显示的数据
 ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.spinner_item, R.id.text, data);

好了,可以查看效果了。其实就是使用动态数据来生成一个新的Adapter。
完成之后,我们发现其实Spinner和ListView的用法相当。

该篇结束,若有不足,望不吝赐教!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值