Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1071285
  • 博文数量: 403
  • 博客积分: 10272
  • 博客等级: 上将
  • 技术积分: 4407
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:22
文章分类

全部博文(403)

文章存档

2012年(403)

分类: 嵌入式

2012-02-26 16:19:57

更多精彩内容,请点击阅读:《API Demos 2.3 学习笔记》


上一节我们讲到RadioGroup控件。大家试着想想,如果RadioGroup里面有很多选项,那是不是会占用大片区域呢?这种情况下,对于本来就不大的手机界面空间来说简直是一种浪费。这时,我们就要用到Spinner下拉列表控件了。
下面简单介绍怎么创建和使用一个Spinner控件。

首先,在layout布局文件文件中定义一个Spinner控件。

  1.     android:id="@+id/spinner1"  
  2.     android:layout_width="match_parent"  
  3.     android:layout_height="wrap_content"  
  4.     android:drawSelectorOnTop="true"  
  5.     android:prompt="@string/spinner_1_color_prompt" />  
注:
1、android:drawSelectorOnTop="true"
有关该属性的相关知识请参考:http://blog.csdn.net/jincf2011/article/details/6598689

2、android:prompt="@string/spinner_1_color_prompt" 
表示下拉列表控件Spinner上的标题文字。如下所示:“Choose a color”就是该属性定义的标题文字。


接着,定义Spinner控件的数据源数组。在value目录下创建一个arrays.xml文件。在里面定义一个数组,用作Spinner控件的数据源。格式如下:

  1.   
  2. <string-array name="colors">  
  3.     <item>reditem>  
  4.     <item>orangeitem>  
  5.     <item>yellowitem>  
  6.     <item>greenitem>  
  7.     <item>blueitem>  
  8.     <item>violetitem>  
  9. string-array>  

最后,在Spinner1.java文件中实例化Spinner控件。
  1. // 通过findViewById方法获得一个Spinner对象s1,下同  
  2. Spinner s1 = (Spinner) findViewById(R.id.spinner1);  
  3.   
  4. //根据颜色数组R.array.colors创建一个数组适配器  
  5. //第二个参数 R.array.colors 为数组适配器数据源  
  6. //第三个参数 是下拉列表中每个数据所占据的 View 的样式 。这里采用系统默认样式 android.R.layout.simple_spinner_item   
  7. ArrayAdapter adapter = ArrayAdapter.createFromResource(  
  8.         this, R.array.colors, android.R.layout.simple_spinner_item);  
  9.   
  10. //设置适配器下拉样式,这里是系统默认样式 android.R.layout.simple_spinner_dropdown_item  
  11. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  
  12.   
  13. //将 Spinner 控件绑定适配器 adapter  
  14. s1.setAdapter(adapter);  

这样,一个Spinner控件就成功创建好了。那么这个控件怎么用呢?和按钮等大多数控件一样,Spinner控件也是通过创建一个监听器来监听用户的动作的。当用户选择其中一个选项时,便会触发响应。
  1. //设置监听器。当用户选择其中一个选项时,触发响应。  
  2. s1.setOnItemSelectedListener(  
  3.         //选择其中一个选项时,触发该响应  
  4.         //parent:装载数据的视图列表  
  5.         //view:列表中当前选中的item视图  
  6.         //position:选中的item在AdapterView中的索引  
  7.         //id:选中的item视图控件的id值  
  8.         new OnItemSelectedListener() {  
  9.             public void onItemSelected(  
  10.                     AdapterView parent, View view, int position, long id) {  
  11.                 showToast("Spinner1: position=" + position + " id=" + id);  
  12.             }  
  13.   
  14.             //什么选项都没选择时,触发该响应  
  15.             public void onNothingSelected(AdapterView parent) {  
  16.                 showToast("Spinner1: unselected");  
  17.             }  
  18.         });  


下面我们进行实例代码解析:
res-values-arrays.xml

  1. xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <resources>  
  4.       
  5.     <string-array name="colors">  
  6.         <item>reditem>  
  7.         <item>orangeitem>  
  8.         <item>yellowitem>  
  9.         <item>greenitem>  
  10.         <item>blueitem>  
  11.         <item>violetitem>  
  12.     string-array>  
  13.       
  14.       
  15.     <string-array name="planets">  
  16.         <item>Mercuryitem>  
  17.         <item>Venusitem>  
  18.         <item>Earthitem>  
  19.         <item>Marsitem>  
  20.         <item>Jupiteritem>  
  21.         <item>Saturnitem>  
  22.         <item>Uranusitem>  
  23.         <item>Neptuneitem>  
  24.         <item>Plutoitem>  
  25.     string-array>  
  26.       
  27. resources>  


res-layout-spinner_1.xml

  1. xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android=""  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="wrap_content"  
  5.     android:orientation="vertical"  
  6.     android:padding="10dip" >  
  7.   
  8.     <TextView  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="@string/spinner_1_color" />  
  12.   
  13.       
  14.       
  15.       
  16.     <Spinner  
  17.         android:id="@+id/spinner1"  
  18.         android:layout_width="match_parent"  
  19.         android:layout_height="wrap_content"  
  20.         android:drawSelectorOnTop="true"  
  21.         android:prompt="@string/spinner_1_color_prompt" />  
  22.   
  23.     <TextView  
  24.         android:layout_width="match_parent"  
  25.         android:layout_height="wrap_content"  
  26.         android:layout_marginTop="10dip"  
  27.         android:text="@string/spinner_1_planet" />  
  28.   
  29.     <Spinner  
  30.         android:id="@+id/spinner2"  
  31.         android:layout_width="match_parent"  
  32.         android:layout_height="wrap_content"  
  33.         android:drawSelectorOnTop="true"  
  34.         android:prompt="@string/spinner_1_planet_prompt" />  
  35.   
  36. LinearLayout>  


src-com.example.android.apis.view-Spinner1.java

  1. package com.example.android.apis.view;  
  2.   
  3. /** 
  4.  * 演示如何使用下拉列表控件Spinner 
  5.  */  
  6. import com.example.android.apis.R;  
  7.   
  8. import android.app.Activity;  
  9. import android.os.Bundle;  
  10. import android.view.View;  
  11. import android.widget.AdapterView;  
  12. import android.widget.ArrayAdapter;  
  13. import android.widget.Spinner;  
  14. import android.widget.Toast;  
  15. import android.widget.AdapterView.OnItemSelectedListener;  
  16.   
  17.   
  18. public class Spinner1 extends Activity {  
  19.   
  20.     // 调用Toast控件来显示消息msg,用来提示用户  
  21.    void showToast(CharSequence msg) {  
  22.         Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();  
  23.     }  
  24.       
  25.     @Override  
  26.     public void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         setContentView(R.layout.spinner_1);  
  29.   
  30.         // 通过findViewById方法获得一个Spinner对象s1,下同  
  31.         Spinner s1 = (Spinner) findViewById(R.id.spinner1);  
  32.           
  33.         //根据颜色数组R.array.colors创建一个数组适配器  
  34.         //第二个参数 R.array.colors 为数组适配器数据源  
  35.         //第三个参数 是下拉列表中每个数据所占据的 View 的样式 。这里采用系统默认样式 android.R.layout.simple_spinner_item   
  36.         ArrayAdapter adapter = ArrayAdapter.createFromResource(  
  37.                 this, R.array.colors, android.R.layout.simple_spinner_item);  
  38.           
  39.         //设置适配器下拉样式,这里是系统默认样式 android.R.layout.simple_spinner_dropdown_item  
  40.         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  
  41.           
  42.         //将 Spinner 控件绑定适配器 adapter  
  43.         s1.setAdapter(adapter);  
  44.           
  45.         //设置监听器。当用户选择其中一个选项时,触发响应。  
  46.         s1.setOnItemSelectedListener(  
  47.                 //选择其中一个选项时,触发该响应  
  48.                 //parent:装载数据的视图列表  
  49.                 //view:列表中当前选中的item视图  
  50.                 //position:选中的item在AdapterView中的索引  
  51.                 //id:选中的item视图控件的id值  
  52.                 new OnItemSelectedListener() {  
  53.                     public void onItemSelected(  
  54.                             AdapterView parent, View view, int position, long id) {  
  55.                         showToast("Spinner1: position=" + position + " id=" + id);  
  56.                     }  
  57.   
  58.                     //什么选项都没选择时,触发该响应  
  59.                     public void onNothingSelected(AdapterView parent) {  
  60.                         showToast("Spinner1: unselected");  
  61.                     }  
  62.                 });  
  63.   
  64.         // 通过findViewById方法获得一个Spinner对象s2  
  65.         Spinner s2 = (Spinner) findViewById(R.id.spinner2);  
  66.         adapter = ArrayAdapter.createFromResource(this, R.array.planets,  
  67.                 android.R.layout.simple_spinner_item);  
  68.         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  
  69.         s2.setAdapter(adapter);  
  70.         s2.setOnItemSelectedListener(  
  71.                 new OnItemSelectedListener() {  
  72.                     public void onItemSelected(  
  73.                             AdapterView parent, View view, int position, long id) {  
  74.                         showToast("Spinner2: position=" + position + " id=" + id);  
  75.                     }  
  76.   
  77.                     public void onNothingSelected(AdapterView parent) {  
  78.                         showToast("Spinner2: unselected");  
  79.                     }  
  80.                 });  
  81.     }  
  82. }  

预览效果;

          
阅读(781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~