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. JavaScript中数组Array.sort()排序方法详解

    JavaScript中数组的sort()方法主要用于对数组的元素进行排序.其中,sort()方法有一个可选参数.但是,此参数必须是函数. 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编 ...

  2. WritePrivateProfileString等读写.ini配置文件

    配置文件中经常用到ini文件,在VC中其函数分别为: 写入.ini文件: BOOL WritePrivateProfileString( LPCTSTR lpAppName, // INI文件中的一个 ...

  3. C++内联汇编,输出人物名字

    DWORD PeopleBase =0x9CD674;//天龙人物基址 //获取人物名称 char * CData::GetPeopleName() {     char * name="& ...

  4. python每日一类(5):itertools模块

    itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器和生成器表达式)的函数联合使用. ch ...

  5. vagrant virtualbox VM inaccessible解决办法

    vagrant无法访问的提示:Please open VirtualBox and clear out your inaccessible virtual machines or find a way ...

  6. 牛客小白月赛3 I 排名【结构体排序/较复杂/细节】

    链接:https://www.nowcoder.com/acm/contest/87/I 来源:牛客网 题目描述 Cwbc和XHRlyb都参加了SDOI2018,他们特别关心自己的排名. 我们定义每一 ...

  7. AppScan 浏览器兼容解决

    手动探索的时候,因为打开的浏览器是appscan自带的,可能会存在兼容性问题,有些页面无法正常打开.那么是否可以用我们电脑上的浏览器(IE .火狐.谷歌)来进行录制 菜单栏--工具---选项----首 ...

  8. Cookie和Session在Node.JS中的实践(一)

    Cookie和Session在Node.JS中的实践(一) Cookie和Session是一个非常有趣的概念,也是一个老生常谈的话题.然而,作者看了许多文章,也翻看了几本书籍,它们对Cookie和Se ...

  9. JSK 11: 移除数组中的重复元素

    题目描述 给定一个升序排列的数组,去掉重复的数,并输出新的数组的长度. 例如:数组 $A = \{1, 1, 2\}$,你的程序应该输出 $2$ 即新数组的长度,新数组为 $\{1, 2\}$. 要求 ...

  10. reason: 'data parameter is nil'

    最近APP启动之后老是报这个错:*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ...