zoukankan      html  css  js  c++  java
  • android下拉菜单spinner的使用方法

    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

    [html] view plaincopy
    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 代码。

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

    运行结果如下图所示:


  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/sowhat4999/p/4439870.html
Copyright © 2011-2022 走看看