Android入门(七):Spinner下拉式菜单组件

  对于手机和平板电脑的应用程序来说,打字是非常不方便的操作方式,比较好的方式就是列出一组选项让用户挑选,这样就可以避免打字的麻烦。使用Spinner下拉菜单组件需要完成以下几个步骤:

  1.建立选项列表,选项列表中包含许多项目名称,这些项目名称是用数组的方式代表;

  2.把选项列表设置给一个Spinner接口组件;

  3.设置Spinner组件的菜单显示格式;

  4.设置Spinner组件的OnItemSelectedListener()事件处理程序,当用户单击某个项目之后,程序必须取得该项目所对应的数据。

  特别提示:建立选项列表有两种方式,第一种是直接将选项列表以数组的方式宣告在程序中。这种方式比较简单,但是我们在第五章提到过MVC设计模式,里面提到过应该尽量将程序代码与文字等数据分开,所以就有了第二种选项列表建立方式。我们把项目列表建立在项目的strings.xml文件中,在让程序从项目的资源类R中取得选项列表数组。

  我们可以自己定义一个菜单格式定义文件:

<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:textSize="20sp"    />

  main.xml文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:gravity="center_horizontal">

    <TextView        android:layout_width="200dp"        android:layout_height="wrap_content"        android:textSize="20sp"        android:text="@string/promptSex"/>    <Spinner        android:id="@+id/spnSex"        android:layout_width="200dp"        android:layout_height="wrap_content"        android:textSize="20sp"        android:drawSelectorOnTop="true"        android:prompt="@string/spnSexPrompt"/>        android:spinnerMode="dialog"/>    <TextView        android:layout_width="200dp"        android:layout_height="wrap_content"        android:textSize="20sp"        android:text="@string/promptAge"/>    <EditText        android:id="@+id/edtAge"        android:layout_width="200dp"        android:layout_height="wrap_content"        android:textSize="20sp"        android:inputType="number"        android:text=""/>    <Button        android:id="@+id/btnDoSug"        android:layout_width="200dp"        android:layout_height="wrap_content"        android:textSize="20sp"        android:text="@string/promptBtnDoSug"/>    <TextView        android:id="@+id/txtResult"        android:layout_width="200dp"        android:layout_height="wrap_content"        android:textSize="20sp"        android:text="@string/sugResult"/></LinearLayout>

strings.xml文件:
<resources>    <string name="app_name">健身咨询</string>    <string name="promptSex">性别:</string>    <string name="spnSexPrompt">性别:</string>    <string name="promptAge">年龄:</string>    <string name="promptBtnDoSug">健身咨询</string>    <string name="sugResult">结果:</string>    <string name="sugRun">跑步</string>    <string name="sugSwim">游泳</string>    <string name="sugSuggestion">健康咨询</string>    <string name="sexMale">男</string>    <string-array name="spnSexList">        <item>男</item>        <item>女</item>    </string-array></resources>

程序代码:
public class MainActivity extends Activity{

    private Button btnDoSug;    private EditText edtAge;    private TextView txtResult;    private Spinner spnSex;

    private String sSex;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        setupViewComponent();    }

    private void setupViewComponent()    {        //从资源类R中取得接口组件        btnDoSug = (Button)findViewById(R.id.btnDoSug);        spnSex = (Spinner)findViewById(R.id.spnSex);        edtAge = (EditText)findViewById(R.id.edtAge);        txtResult = (TextView)findViewById(R.id.txtResult);

        ArrayAdapter<CharSequence> adapSexList = ArrayAdapter.createFromResource(                this, R.array.spnSexList, R.layout.spinner_layout);        spnSex.setAdapter(adapSexList);        spnSex.setOnItemSelectedListener(spnSexItemSelLis);

        //button组件事件的listener        btnDoSug.setOnClickListener(btnDoSugOnClick);    }

    private Spinner.OnItemSelectedListener spnSexItemSelLis = new Spinner.OnItemSelectedListener()    {        public void onItemSelected(AdapterView parent, View v, int position, long id)        {            sSex = parent.getSelectedItem().toString();        }        public void onNothingSelected(AdapterView parent)        {            //null        }    };

    private Button.OnClickListener btnDoSugOnClick = new Button.OnClickListener()    {

        public void onClick(View view){

            int iAge = Integer.parseInt(edtAge.getText().toString());

            String strSug = "结果:";            if(sSex.equals("男"))            {                if(iAge < 28)                    strSug += getString(R.string.sugRun);                else if(iAge > 33)                        strSug += getString(R.string.sugRun);                    else                    strSug += getString(R.string.sugRun);            }            else            {                if(iAge < 28)                    strSug += getString(R.string.sugRun);                else if(iAge > 33)                    strSug += getString(R.string.sugSwim);                else                    strSug += getString(R.string.sugSwim);            }

            txtResult.setText(strSug);        }    };}
效果截图:
 
时间: 2024-10-22 02:58:56

Android入门(七):Spinner下拉式菜单组件的相关文章

Web前端开发实战3:二级下拉式菜单之jQuery实现

大家都知道jQuery是一个框架,它对JS进行了封装,使其更方便使用.前面两篇博文分别是用CSS样式和JS实现 的,那么这篇就用jQuery来实现二级下拉式菜单. 使用JQuery实现需要用到的知识有: 1)使用$(function(){...})获取到想要作用的HTML元素. 2)通过使用children()方法寻找子元素. 3)通过使用show()方法来显示HTML元素. 4)通过使用hide()方法来隐藏HTML元素. 5)jQuery库引用方法: 第一种方法:将jQuery库下载到电脑上

Web前端开发实战2:二级下拉式菜单之JS实现

上一篇博文提到了二级下拉式菜单是用HTML和CSS实现的,我们这一篇来用JavaScript脚本实现下拉菜单的显 示和隐藏.使用 JavaScript方法实现我们需要用的知识有: 1)JS事件:onmouseover鼠标经过事件和onmouseout鼠标离开事件. 2)JS基础语法:使用function关键字定义函数. 3)DOM编程:getElementsByTagName()方法. 那么接下来就是我们制作的流程: 1)隐藏二级菜单:设置CSS样式,让二级菜单隐藏. 2)编写显示子菜单show

QPushButton下拉式菜单(是否取消下拉三角,是否check)

给QPushButton添加菜单的示例,前面已经有了三种方式: Qt学习之给QPushButton添加菜单ActionsContextMenu方法 Qt学习之给QPushButton添加菜单CustomContextMenu方法 Qt学习之给QPushButton添加菜单DefaultContextMenu方法 今天再提供一种方式,就是给QPushButton添加下拉式菜单.类似于Combobox一样.前面三种方式实现的都是光标在哪个位置,菜单就在哪里显示.而下拉式菜单只在按钮的下方显示,同时会

Web前端开发实战6:CSS实现导航菜单结合二级下拉式菜单的简单变换

前面几篇博文都在讲导航菜单和二级下拉式菜单,其实有很多方法都可以实现的,具体的情况还要视情况而定. 在后面学习到jQuery框架之后,会有更丰富的动画效果,由于在学习Ajax和jQuery的初步阶段,对于很多的复杂的导 航菜单和二级下拉式菜单没法做,但是学习了CSS和JS还是能实现一些简单的变换的.这篇博文就来说说用CSS实现 导航菜单结合二级下拉式菜单的两个简单变换吧. 首先还是在前面博文的基础上加以实现,其实只用HTML和CSS还是可以做出不错的效果,但是相较于JS和 jQuery来说就有很

为下拉式菜单(DropDownList)添加第一个选项

很多方法可以为为下拉式菜单(DropDownList)添加第一个选项,下面是Insus.NET小结了几个方法,仅供参考: Html code: <body>    <form id="form1" runat="server">    <div>        <asp:DropDownList ID="DropDownList1" runat="server">        

用JavaScript+css制作下拉式菜单

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title>用javascript下拉式菜单</title> 6 7 <style type="text/css"> 8 *{ 9 padding: 0; 10 margin: 0; 11 12 } 13 body{

[angular2]select(下拉式菜单)如何设定默认选项,如何显示value而选中的值是key

select(下拉式菜单)如何设定默认选项,如何显示value而选中的值是key 前言 官网甚少提到关于html的下拉式菜单的一些做法,自己因为一些特殊的要求,所以写篇文章记录一下. 范例 如何给一个默认值,并且如果没有选取的话,验证是不通过的状态呢?请参考下面的示例 import { Component } from '@angular/core'; import { NgForm } from "@angular/forms/src/directives"; @Component(

Excel 输入数据的效率 - 下拉式菜单设计 (三之二)

摘要:Excel 输入数据的效率 - 下拉式菜单设计 (三之二) 在前文"Excel输入数据的效率-下拉式菜单设计(三之一)中曾经提到单一选项菜单的设计方式.这种菜单的缺点在于:菜单中的客户编号一多,就很难记得那一个编号对应到那一家客户.如此一来,就容易告成选错的现像发生.因此,必须使"多重选项"的菜单来解决此一问题.所谓"多重选项"是指:能在菜单中同时看到客户编号和客户名称.这么一来,就不会选错客户编号了. 全文介绍:http://support.mic

web前端入门到实战:html基础—下拉式菜单

一个网站能否让用户容易使用该网站往往是由菜单栏体现出来,因为它为网页的大多数页面提供功能入口.一个轻轻的点击以后,即可显示出菜单项,将网站的大部分页面和功能显示出来让用户清楚了解从而用户节约一定的时间.接下来我教大家写单击菜单栏中的菜单命令将会出现一个下拉菜单. 1.HTML页面 <div id="nav"> <ul> <li><a href="">菜单一</a> <ul> <li>