Spinner控件也是一种列表类型的控件,它的继承关系如下: 

java.lang.Object 
   ↳ android.view.View 
     ↳ android.view.ViewGroup 
       ↳ android.widget.AdapterView<Textends android.widget.Adapter> 
         ↳ android.widget.AbsSpinner 
          ↳ android.widget.Spinner 
android.widget.Spinner继承了android.view.ViewGroup类。

在Android的UI开发中,Spinner(下拉列表)总是可以用到的,一个简单的自定义Spinner制作我们只需要记住这重要的五步,一个Spinner就可以应用而生了。

(1)新建一个android工程,名称为Spinner。同时建一个Activity,名称为SpinnerActivity。

(2)修改res/layout/main.xml

  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
  8. android:id = "@+id/TextView_city"
  9. android:layout_width = "wrap_content"
  10. android:layout_height = "wrap_content"
  11. android:text = "所在城市:"
  12. />
  13. <!-- 定义一个城市信息下拉菜单-->
  14. <Spinner
  15. android:id = "@+id/Spinner_city"
  16. android:layout_width = "wrap_content"
  17. android:layout_height ="wrap_content" >
  18. </Spinner >
  19. </LinearLayout>

(3)SpinnerActivity.java 代码。

  1. package cn.com;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.app.Activity;
  5. import android.os.Bundle;
  6. import android.view.MotionEvent;
  7. import android.view.View;
  8. import android.widget.AdapterView;
  9. import android.widget.ArrayAdapter;
  10. import android.widget.Spinner;
  11. import android.widget.TextView;
  12. public class SpinnerActivity extends Activity {
  13. /** Called when the activity is first created. */
  14. private List<String> list = new ArrayList<String>();
  15. private TextView myTextView;
  16. private Spinner mySpinner;
  17. private ArrayAdapter<String> adapter;
  18. @Override
  19. public void onCreate(Bundle savedInstanceState) {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.main);
  22. //第一步:添加一个下拉列表项的list,这里添加的项就是下拉列表的菜单项
  23. list.add("北京");
  24. list.add("上海");
  25. list.add("深圳");
  26. list.add("福州");
  27. list.add("厦门");
  28. myTextView = (TextView)findViewById(R.id.TextView_city);
  29. mySpinner = (Spinner)findViewById(R.id.Spinner_city);
  30. //第二步:为下拉列表定义一个适配器,这里就用到里前面定义的list。
  31. adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, list);
  32. //第三步:为适配器设置下拉列表下拉时的菜单样式。
  33. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  34. //第四步:将适配器添加到下拉列表上
  35. mySpinner.setAdapter(adapter);
  36. //第五步:为下拉列表设置各种事件的响应,这个事响应菜单被选中
  37. mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
  38. public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
  39. // TODO Auto-generated method stub
  40. /* 将所选mySpinner 的值带入myTextView 中*/
  41. myTextView.setText("您选择的是:"+ adapter.getItem(arg2));
  42. /* 将mySpinner 显示*/
  43. arg0.setVisibility(View.VISIBLE);
  44. }
  45. public void onNothingSelected(AdapterView<?> arg0) {
  46. // TODO Auto-generated method stub
  47. myTextView.setText("NONE");
  48. arg0.setVisibility(View.VISIBLE);
  49. }
  50. });
  51. /*下拉菜单弹出的内容选项触屏事件处理*/
  52. mySpinner.setOnTouchListener(new Spinner.OnTouchListener(){
  53. public boolean onTouch(View v, MotionEvent event) {
  54. // TODO Auto-generated method stub
  55. /**
  56. *
  57. */
  58. return false;
  59. }
  60. });
  61. /*下拉菜单弹出的内容选项焦点改变事件处理*/
  62. mySpinner.setOnFocusChangeListener(new Spinner.OnFocusChangeListener(){
  63. public void onFocusChange(View v, boolean hasFocus) {
  64. // TODO Auto-generated method stub
  65. }
  66. });
  67. }
  68. }

运行结果如下图所示:

android下拉菜单spinner的使用方法的更多相关文章

  1. Android 下拉菜单 Spinner 赋值

    private Spinner m_spiModel = null; //产品型号 m_spiModel = (Spinner) findViewById(R.id.spiModel);//产品型号 ...

  2. android下拉菜单 spinner 学习

    首先看一下继承关系: public class Spinner extends AbsSpinner implements DialogInterface.OnClickListener Class ...

  3. 下拉菜单 Spinner 简单纯字符串版

    下拉菜单 Spinner 简单纯字符串版 public class MainActivity extends Activity implements AdapterView.OnItemSelecte ...

  4. Firemonkey TComboBox 下拉菜单字型修改方法 (D10)

    在 FMX 下的 TComboBox 下拉菜单字型修改有二种方法: uses FMX.Pickers; 使用 Style,需先设定好 Style 后,再指定预设项的 Style,方法如下: proce ...

  5. CSS实现下拉菜单的几种方法

    PS:转自https://www.cnblogs.com/yewenxiang/p/6064117.html 第一种:display:none和display:block切换 1 <!DOCTY ...

  6. Excel设置数据有效性实现单元格下拉菜单的3种方法(转)

    http://blog.csdn.net/cdefu/article/details/4129136 一.直接输入: 1.选择要设置的单元格,譬如A1单元格: 2.选择菜单栏的“数据”→“有效性”→出 ...

  7. Android开发手记(10) 下拉菜单Spinner

    1.自定义Spinner 首先,定义Spinner要显示的项目列表/res/values/arrays.xml <?xml version="1.0" encoding=&q ...

  8. ExtJs 下拉菜单分页工具插件 代码分析

    Ext.ns("Ext.ux"); //创建插件对象 Ext.ux.PageSizePlugin = function(){ //调用父对象的构造方法,并为此插件生成一个预定义st ...

  9. Bootstrap下拉菜单

    前面的话 网页交互的时候经常会需要上下文菜单或者隐藏/显示菜单项,Bootstrap默认提供了用于显示链接列表的可切换.有上下文的菜单.而且在各种交互状态下的菜单展示需要和javascript插件配合 ...

随机推荐

  1. Win32环境下代码注入与API钩子的实现(转)

    本文详细的介绍了在Visual Studio(以下简称VS)下实现API钩子的编程方法,阅读本文需要基础:有操作系统的基本知识(进程管理,内存管理),会在VS下编写和调试Win32应用程序和动态链接库 ...

  2. Ubuntu14.04 在右键中添加 在终端中打开

    1.在terminal中执行: sudo apt-get install nautilus-open-terminal 此时可能会提示:nable to locate package nautilus ...

  3. Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] A. Raising Bacteria【位运算/二进制拆分/细胞繁殖,每天倍增】

    A. Raising Bacteria time limit per test 1 second memory limit per test 256 megabytes input standard ...

  4. #420 Div2 D

    #420 Div2 D 题意 给出一个方格矩阵,其中存在亮着的方格,只能在亮着的方格上行走,可以在初始亮的方格上花费一枚硬币临时点亮任意一行或一列,地图上同一时间只能存在一个这样的行或列,问走到终点最 ...

  5. php的function() use($args)用法

    使用use返回 aaa aaa.使用函数传参数aaa bbb. use的参数必须是已经存在的,如果没有定义返回Notice: Undefined variable: word ,使用函数参数方式不需要 ...

  6. 十. 图形界面(GUI)设计1.图形界面设计基础

    早先程序使用最简单的输入输出方式,用户在键盘输入数据,程序将信息输出在屏幕上.现代程序要求使用图形用户界面(Graphical User Interface,GUI),界面中有菜单.按钮等,用户通过鼠 ...

  7. 每天一个linux命令1之scp

    不同的Linux之间copy文件常用有3种方法: 第一种就是ftp,也就是其中一台Linux安装ftpServer,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种方法就是采 ...

  8. linux之rpm指令

    rmp原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采用.RPM套件管理方式的出现,让Linux易于 ...

  9. 【spring boot】集成了druid后,同样的mybatis模糊查询语句出错Caused by: com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'name LIKE '%' ? '%'

    druid版本是 <!-- https://mvnrepository.com/artifact/com.alibaba/druid 数据库连接池--> <dependency> ...

  10. [置顶] kubernetes资源对象--Label

    概念 Label机制是K8S中一个重要设计,通过Label进行对象弱关联,灵活地分类和选择不同服务或业务,让用户根据自己特定的组织结构以松耦合方式进行服务部署. Label是一对KV,对用户而言非常有 ...