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. CF978C Letters【前缀和+二分查找/几房几号】

    [链接]:CF978C [分析]:在前缀和数组种二分找到>=询问数的位置,根据位置就好操作了 [代码]: #include<bits/stdc++.h> using namespac ...

  2. Python的功能模块[0] -> wmi -> 获取 Windows 内部信息

    wmi模块 / wmi Module WMI (Windows Management Instrumentation) 模块可用于获取 Windows 内部信息.该模块需要 win32com 的支持, ...

  3. 七. 多线程编程6.isAlive()和join()的使用

    如前所述,通常你希望主线程最后结束.在前面的例子中,这点是通过在main()中调用sleep()来实现的,经过足够长时间的延迟以确保所有子线程都先于主线程结束.然而,这不是一个令人满意的解决方法,它也 ...

  4. How to create an IPA (Xcode 5)

    This tutorial will walk you through the easiest way to generate an IPA using Xcode 5. We will be usi ...

  5. python3使用configparser解析配置文件

    http://www.jb51.net/article/87402.htm 需要注意的是每一个字段后面的值外面没有引号,切记,自己第一次配置时,加了引号,搞了半天 没找到错误,, 在用Python做开 ...

  6. Uncaught SyntaxError: Invalid Unicode escape sequence异常处理

    今天碰到一个问题,页面报错:Uncaught SyntaxError: Invalid Unicode escape sequence ,{index:'operate',name:'operate' ...

  7. 2017.3.31 spring mvc教程(七)多视图控制器

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  8. 转: Java 应用一般架构

    http://mp.weixin.qq.com/s?__biz=MzAwMzI3Njc1MA==&mid=2650192186&idx=1&sn=bd08fd3a89f9089 ...

  9. C#控件之DataGridView

    第一种:DataSet ds=new DataSet (); this.dataGridView1.DataSource=ds.Table[0]; 第二种:DataTable dt=new DataT ...

  10. 如何看一个VC工程具体是什么工程?

    VC6等可以创建MFC, Win32等工程,拿到一个工程,怎么判断是什么工程呢? VC6全文检索看看有没有theApp 如果有一般就是MFC的 (VS?)看看工程设置,入口点函数写的是什么,/subs ...