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>

 

点击下载:源代码

 

运行效果图

Android控件之Spinner

你可能感兴趣的:(android控件)