zoukankan      html  css  js  c++  java
  • Android spinner控件的实现

    今天学习了Android spinner控件的实现,下面就给大家分享下下拉列表框(Spinner)

    文章来源:好岸园it技术网 http://www.hopean.com

    手机的屏幕较小,因此使用下拉列表来进行选择式输入是一个非常好的方式。Spinner
    与 ListView 一样,也是 AdapterView 的一个间接子类,是一个显示数据的窗口。
    Spinner 类常用的方法如下:
       Spinner.getItemAtPosition(Spinner.getSelectedItemPosition()); 获取下拉列
    表框的值
      调用 setOnItemSelectedListener() 方法,处理下拉列表框被选择事件, 把
    AdapterView.OnItemSelectedListener 实例作为参数传入

    strings.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <string name="app_name">ASpinnerDemo</string>
        <string name="hello_world">Hello world!</string>
        <string name="menu_settings">Settings</string>
    	<string name="selectStr">你的选择是?</string>
    </resources>


    main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <TextView   
            android:id="@+id/TextView_Show"   
            android:layout_width="fill_parent"   
            android:layout_height="wrap_content"   
            android:text="@string/selectStr"   
            android:textSize="16sp">   
        </TextView>   
        <Spinner   
            android:id="@+id/spinner_City"   
            android:layout_width="fill_parent"
            android:layout_marginTop="50dp"   
            android:layout_height="wrap_content">   
        </Spinner><!-- 定义一个下拉菜单-->   
    
    
    </RelativeLayout>


    java代码实现

    package com.example.aspinnerdemo;
    
    import java.util.ArrayList;   
    import java.util.List;   
       
    import android.app.Activity;   
    import android.os.Bundle;   
    import android.view.MotionEvent;   
    import android.view.View;
    import android.view.Menu;     
    import android.widget.AdapterView;   
    import android.widget.ArrayAdapter;   
    import android.widget.Spinner;   
    import android.widget.TextView; 
    
    public class MainActivity extends Activity {
    	
    	/** Called when the activity is first created. */   
        private List<String> list = new ArrayList<String>();   
        private TextView myTextView;   
        private Spinner mySpinner;   
        private ArrayAdapter<String> adapter;     
    
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		//第一步:添加一个下拉列表项的list,这里添加的项就是下拉列表的菜单项   
    	        list.add("测试一");   
    	        list.add("测试二");   
    	        list.add("测试三");   
    	        list.add("测试四");   
    	        list.add("测试五");
    	        list.add("测试六");
    	        list.add("测试七");
    	        list.add("测试八");
    	        list.add("测试九");
    	        myTextView = (TextView)findViewById(R.id.TextView_Show);   
    	        mySpinner = (Spinner)findViewById(R.id.spinner_City);   
    	        //第二步:为下拉列表定义一个适配器,这里就用到里前面定义的list。   
    	        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, list);   
    	        //第三步:为适配器设置下拉列表下拉时的菜单样式。   
    	        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);   
    	        //第四步:将适配器添加到下拉列表上   
    	        mySpinner.setAdapter(adapter);   
    	        //第五步:为下拉列表设置各种事件的响应,这个事响应菜单被选中   
    	        mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){   
    	            public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {   
    	                // TODO Auto-generated method stub   
    	                /* 将所选mySpinner 的值带入myTextView 中*/   
    	                myTextView.setText("您选择的是:"+ adapter.getItem(arg2));   
    	                /* 将mySpinner 显示*/   
    	                arg0.setVisibility(View.VISIBLE);   
    	            }   
    	            public void onNothingSelected(AdapterView<?> arg0) {   
    	                // TODO Auto-generated method stub   
    	                myTextView.setText("NONE");   
    	                arg0.setVisibility(View.VISIBLE);   
    	            }   
    	        });   
    	        /*下拉菜单弹出的内容选项触屏事件处理*/   
    	        mySpinner.setOnTouchListener(new Spinner.OnTouchListener(){   
    	            public boolean onTouch(View v, MotionEvent event) {   
    	                // TODO Auto-generated method stub   
    	                /* 将mySpinner 隐藏,不隐藏也可以,看自己爱好*/   
    	                v.setVisibility(View.INVISIBLE);   
    	                return false;   
    	            }   
    	        });   
    	        /*下拉菜单弹出的内容选项焦点改变事件处理*/   
    	        mySpinner.setOnFocusChangeListener(new Spinner.OnFocusChangeListener(){   
    	        public void onFocusChange(View v, boolean hasFocus) {   
    		       // TODO Auto-generated method stub   
    	            v.setVisibility(View.VISIBLE);   
    	        }   
    	        });   
    
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.activity_main, menu);
    		return true;
    	}
    
    }
    


    源码下载:ASpinnerDemo

    欢迎光临小站 好岸园 http://www.hopean.com
  • 相关阅读:
    PAT 甲级 1126 Eulerian Path (25 分)
    PAT 甲级 1126 Eulerian Path (25 分)
    PAT 甲级 1125 Chain the Ropes (25 分)
    PAT 甲级 1125 Chain the Ropes (25 分)
    PAT 甲级 1124 Raffle for Weibo Followers (20 分)
    PAT 甲级 1124 Raffle for Weibo Followers (20 分)
    PAT 甲级 1131 Subway Map (30 分)
    PAT 甲级 1131 Subway Map (30 分)
    AcWing 906. 区间分组 区间贪心
    AcWing 907. 区间覆盖 区间贪心
  • 原文地址:https://www.cnblogs.com/hopeanCom/p/2845427.html
Copyright © 2011-2022 走看看