zoukankan      html  css  js  c++  java
  • Android控件之Spinner

    Android控件之Spinner

    1 Spinner简介

    Spinner是下拉列表。
    http://developer.android.com/reference/android/widget/Spinner.html
    http://developer.android.com/guide/topics/ui/controls/spinner.html

    2 Spinner示例

    创建一个activity,包含2个Spinner。
    第一个spinner,显示星球选项。
    第二个spinner,显示颜色选项。

    应用层代码

    package com.skywang.control;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.View;
    import android.widget.Toast;
    import android.widget.TextView;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.SpinnerAdapter;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.util.Log;
    
    public class SpinnerTest extends Activity {
        private static final String TAG = "SKYWANG";
        
        private Spinner mSpinPlanet;
        private Spinner mSpinColor;
        private TextView mViewColor;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.spinner_test);
            
            // 设置Spinner
            mSpinPlanet = (Spinner) findViewById(R.id.spin_planet);        
            // 设置ArrayAdapter对应的数据和布局
            ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                    R.array.array_planets, android.R.layout.simple_spinner_item);
            // 设置ArrayAdapter的下拉布局
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            // 将该ArrayAdapter赋值给Spinner
            mSpinPlanet.setAdapter(adapter);
            // 设置选择监听函数
            mSpinPlanet.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                // Spinner选择的回调函数
                public void onItemSelected(AdapterView<?> parent, View view, 
                        int pos, long id) {
                    Log.d(TAG, "select SpinPlanet pos:"+pos+" id:"+id);
                    // 获取array_planets获取对应的String数组
                    String[] planets = getResources().getStringArray(R.array.array_planets);
                    // 获取pos对应的字符串
                    String planet = planets[pos];
                    // 提示
                    showToast(planet);
                }
                // Spinner未选择的回调函数
                public void onNothingSelected(AdapterView<?> parent) {
                    Log.d(TAG, "SpinPlanet onNothingSelected");
                }
            });
            
    
            mViewColor = (TextView) findViewById(R.id.tv_color);
            // 设置Spinner
            mSpinColor = (Spinner) findViewById(R.id.spin_color);
            
            // 设置ArrayAdapter对应的数据和布局
            ArrayAdapter<CharSequence> colorAdapter = ArrayAdapter.createFromResource(this,
                    R.array.array_colors, android.R.layout.simple_spinner_item);
            // 设置ArrayAdapter的下拉布局
            colorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            // 将该ArrayAdapter赋值给Spinner
            mSpinColor.setAdapter(colorAdapter);
            // 设置选择监听函数
            mSpinColor.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                // Spinner选择的回调函数
                public void onItemSelected(AdapterView<?> parent, View view, 
                        int pos, long id) {
                    Log.d(TAG, "select SpinColor pos:"+pos+" id:"+id);
                    String[] colors = getResources().getStringArray(R.array.array_colors);
                    // 获取pos对应的字符串
                    String color = colors[pos];
                    // 提示
                    showToast(color);
                }
                // Spinner未选择的回调函数
                public void onNothingSelected(AdapterView<?> parent) {
                    Log.d(TAG, "SpinColor onNothingSelected");
                }
            });
        }
        
        private void showToast(CharSequence msg) {
            Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
        }
    }

    代码说明:
    设置下拉列表时,要设置数据。若是字符串数据,可以通过ArrayAdapter去设置;若是数据的数据,可以通过CursorAdapter去设置。
    设置完数据之后,要设置下拉时的显示视图。本例中,使用的是标准模块simple_spinner_dropdown_item。

    array_plants和array_colors定义在arrays.xml,内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <string-array name="array_planets">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
    
    <string-array name="array_colors">
        <item>White</item>
        <item>Red</item>
        <item>Orange</item>
        <item>Yellow</item>
        <item>Green</item>
        <item>Cyan</item>
        <item>Blue</item>
        <item>purple</item>
        <item>Black</item>
    </string-array>
    
    </resources>

    layout文件

    <LinearLayout 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"
        android:orientation="vertical" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="24sp"
            android:text="@string/text_planet" />
    
        <Spinner
            android:id="@+id/spin_planet"        
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:prompt="@string/text_planet"
            />
            
        <TextView
            android:id="@+id/tv_color"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="24sp"
            android:text="@string/text_color" />
    
        <Spinner
            android:id="@+id/spin_color"        
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:prompt="@string/text_color"
            />
        
    </LinearLayout>

    manifest文件

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.skywang.control"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.skywang.control.SpinnerTest"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    点击下载:源代码

    运行效果图

  • 相关阅读:
    cocos2d-x lua 学习笔记(1) -- 环境搭建
    Cocos2d-x 3.x 如何编译成安卓程序
    Cocos2d-x 3.4 初体验——安装教程
    cocos2d-x 之 CCProgressTimer
    android sdk离线安装
    在cocos2d-x-3.0 android 平台编译时提示CocosGUI.h: No such file or directory
    cocos2d_x iconv转码
    cocos2d-x发生undefined reference to `XX'异常 一劳永逸解决办法
    libjpeg.a exists or that its path is correct
    UE4插件
  • 原文地址:https://www.cnblogs.com/skywang12345/p/3123053.html
Copyright © 2011-2022 走看看