Android Spinner

本文介绍如何使用Android中的Spinner控件创建下拉列表,并通过实例演示如何设置可选项、下拉列表样式以及添加事件监听器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下拉列表 Spinner。

Spinner的使用,可以极大提高用户的体验性。当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来。供用户选择。

Demo如下,可以留作参考。

1:新建一个SpinnerDemo工程。

2:工程的Layout.xml文件如下:声明一个TextView控件和一个Spinner控件

 

  1. <? xml   version = "1.0"   encoding = "utf-8" ?>   
  2. < LinearLayout   xmlns:android = "http://schemas.android.com/apk/res/android"   
  3.     android:orientation = "vertical"   
  4.     android:layout_width = "fill_parent"   
  5.     android:layout_height = "fill_parent"   
  6.     >   
  7. < TextView   android:text = "@+id/TextView01"   android:id = "@+id/TextView01"   android:layout_width = "wrap_content"   android:layout_height = "wrap_content" > </ TextView >   
  8. < Spinner   android:id = "@+id/Spinner01"   android:layout_width = "wrap_content"   android:layout_height = "wrap_content" > </ Spinner >   
  9. </ LinearLayout >    

3:主代码如下:

  1. package  com.rocky.studio.ch427;  
  2. import  android.app.Activity;  
  3. import  android.os.Bundle;  
  4. import  android.view.View;  
  5. import  android.widget.AdapterView;  
  6. import  android.widget.ArrayAdapter;  
  7. import  android.widget.Spinner;  
  8. import  android.widget.TextView;  
  9. public   class  SpinnerDemo  extends  Activity {  
  10.       
  11.       
  12.     private   static   final  String[] m_Countries={ "o型" , "A型" , "B型" , "AB型" , "其他" };  
  13.     private  TextView m_txtView;  
  14.     private  Spinner m_Spinner;  
  15.     private  ArrayAdapter<String> adapter;  
  16.       
  17.     /** Called when the activity is first created. */   
  18.     @Override   
  19.     public   void  onCreate(Bundle savedInstanceState) {  
  20.         super .onCreate(savedInstanceState);  
  21.         setContentView(R.layout.main);  
  22.           
  23.         m_txtView=(TextView)this .findViewById(R.id.TextView01);  
  24.         m_Spinner=(Spinner)this .findViewById(R.id.Spinner01);  
  25.         //将可选内容与ArrayAdapter连接起来   
  26.         adapter=new  ArrayAdapter<String>( this ,android.R.layout.simple_spinner_item,m_Countries);  
  27.           
  28.         //设置下拉列表的风格   
  29.         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  
  30.           
  31.         //将adapter 添加到m_Spinner中   
  32.         m_Spinner.setAdapter(adapter);  
  33.           
  34.         //添加事件Spinner事件监听   
  35.         m_Spinner.setOnItemSelectedListener(m_SpinnerListener);  
  36.           
  37.         //设置默认值   
  38.         m_Spinner.setVisibility(View.VISIBLE);  
  39.           
  40.     }  
  41.     private  Spinner.OnItemSelectedListener m_SpinnerListener= new  Spinner.OnItemSelectedListener()  
  42.     {  
  43.         public   void  onItemSelected(AdapterView<?> arg0, View arg1,  int  arg2,  
  44.                 long  arg3) {  
  45.             // TODO Auto-generated method stub             
  46.             m_txtView.setText("你的血型是:" +m_Countries[arg2]);  
  47.             //arg0.setVisibility(View.VISIBLE);    
  48.               
  49.         }  
  50.           
  51.         public   void  onNothingSelected(AdapterView<?> arg0) {  
  52.             // TODO Auto-generated method stub   
  53.               
  54.         }         
  55.     };  
  56. }  
### 使用 Android 中的 Spinner 控件 #### 创建并配置 Spinner 控件 在 XML 文件中声明 `Spinner` 组件时,可以为其指定样式其他属性来调整外观。例如设置上下填充以及应用自定义风格: ```xml <Spinner ... android:paddingTop="15dp" android:paddingBottom="15dp" style="@style/customSpinnerStyle"/> ``` 此部分描述了如何在界面文件里引入带有特定样式的 `Spinner` 控件[^1]。 #### 关联适配器与数据源 为了向 `Spinner` 添加选项列表,需创建一个实现了 `SpinnerAdapter` 接口的对象,并将其传递给 `Spinner` 的 `setAdapter()` 方法。这一步骤使得能够指定 `Spinner` 显示的具体项目集合: ```java // 假设 sp1 是已初始化的 Spinner 实例 SpinnerAdapter adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, items); sp1.setAdapter(adapter); // 将 Adapter Spinner 进行绑定 ``` 上述代码展示了怎样利用 `setAdapter()` 函数把 `SpinnerAdapter` 对象分配给名为 `sp1` 的 `Spinner` 变量[^2]。 #### 处理用户交互事件 为了让 `Spinner` 能响应用户的操作,比如改变所选项,则应注册一个监听器。下面的例子说明了如果检测到新项目的选取,会触发相应逻辑处理,如更改其他视图的状态或内容: ```java sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { // 当选择了一个新的 item 后执行的操作 TextView textView = findViewById(R.id.textViewId); String selectedColor = colors[position]; // 颜色数组中的位置对应的颜色字符串 textView.setTextColor(Color.parseColor(selectedColor)); } @Override public void onNothingSelected(AdapterView<?> parentView) { // 用户未做任何选择时可在此处编写默认行为 } }); ``` 这里演示的是通过监听 `onItemSelected` 事件更新另一个 `TextView` 的文本颜色至由 `Spinner` 所选定的颜色值[^3]. #### 应用场景举例 考虑构建一款简单的书籍浏览器应用,其中包含有多个可供挑选的书名作为 `Spinner` 下拉菜单里的条目;一旦用户做出选择,便会展示该书目的封面图像连同简介文字于屏幕下方区域。此类应用场景体现了 `Spinner` 在实际开发过程中的灵活性实用性[^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值