遇见,控件-----Spinner

本文介绍的是Android常用控件Spinner的使用方法

下面是导读:
1.什么时Spinner
2.如何使用Spinner
3.总结

1.什么是Spinner?

 Spinner提供了从一个数据集合中快速选择一项值的办法。默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner选择一个新值。

下图是Android6.0系统的Spinner样式:
Spinner

2.如何使用Spinner?

静态添加数据:

第一步:设计xml布局

  <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <Spinner
            android:id="@+id/spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:entries="@array/languages"
          />
    </LinearLayout>

布局中仅有一个Spinner控件

第二步:在res-values-string.xml文件里新添加数组资源如下

   <string-array name="it">
        <item>c语言</item>
        <item>c++</item>
        <item>Java</item>
        <item>Python</item>
        <item>PHP</item>
    </string-array>

在resources标签内直接添加条目就可以。

第三步:在Activity类中添加内容

声明变量:

 //下拉菜单
    private Spinner spinner;

在onCreate()方法里添加以下内容

        //初始化spinner对象
  spinner= (Spinner) findViewById(R.id.spinner);
        //设置适配器
        /*参数1:context上下文
        参数2:设置好的数据
        参数3:系统默认Spinner初始布局(打开Activity显示的Spinner布局)
        */
        final ArrayAdapter<CharSequence> spinneradapter=ArrayAdapter.createFromResource(
                this,R.array.it,android.R.layout.simple_spinner_item
        );

        //设置展示的项布局(点击下拉按钮后展示的布局)
        //此处使用的是系统默认布局    spinneradapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         //设置适配器
        spinner.setAdapter(spinneradapter);
        //设置监听器
       spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
           @Override
           public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
               String se=parent.getItemAtPosition(position).toString();
               //获取用户选择
               Toast.makeText(LoginActivity.this,se,Toast.LENGTH_SHORT).show();
           }

           @Override
           public void onNothingSelected(AdapterView<?> parent) {
               Toast.makeText(LoginActivity.this,"未选择",Toast.LENGTH_SHORT).show();
           }
       });

动态添加数据:

首先动态添加数据的xml文件是和静态添加一样的,不同的是第二步内容如下:

在onCreate()方法里添加如下内容:

     //首先获取spinner对象
        spinner= (Spinner) findViewById(R.id.spinner);
     //然后使用动态添加的方法来添加数据
        List<String> list =new ArrayList<String>();
        list.add("数据");
        list.add("数据2");
        //适配器还是默认的适配器,这边使用了一个布局文件,我们可以自定义这个布局,第一个参数是context,第二个是自定义布局(列表中每一个条目的样式),第三个是控件id,第四个是数据
        ArrayAdapter adapter=new ArrayAdapter(this,R.layout.item,R.id.textView,list);
       //关联适配器
        spinner.setAdapter(spinneradapter);
       spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
           @Override
           public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
               String se=parent.getItemAtPosition(position).toString();
               //获取用户选择
               Toast.makeText(LoginActivity.this,se,Toast.LENGTH_SHORT).show();
           }

           @Override
           public void onNothingSelected(AdapterView<?> parent) {
               Toast.makeText(LoginActivity.this,"未选择",Toast.LENGTH_SHORT).show();
           }
       });

3.总结

Spinner常被用在需要扩展选择的地方,样式也是可以自定义,根据自己的需要设置item布局,配置自己的适配器,从而达到自己想要的风格,不过一般是修改列表项的样式,至于Spinner收缩时的样式尽量不要修改,避免用户造成误会。

补充:Spinner的一些xml属性
android:spinnerMode=”dialog/dropdown” 设置下拉样式还是对话框样式
android:popupBackground=”图片地址” 设置下拉模式背景图片
更多属性请参考开发者文档。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章