Android編程下拉菜單spinner用法小結(jié)(附2則示例)
本文較為詳細(xì)的總結(jié)分析了Android編程下拉菜單spinner用法。分享給大家供大家參考,具體如下:
Spinner控件也是一種列表類型的控件,它的繼承關(guān)系如下:
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開發(fā)中,Spinner(下拉列表)總是可以用到的,一個(gè)簡(jiǎn)單的自定義Spinner制作我們只需要記住這重要的五步,一個(gè)Spinner就可以應(yīng)用而生了。
(1)新建一個(gè)android工程,名稱為Spinner。同時(shí)建一個(gè)Activity,名稱為SpinnerActivity。

(2)修改res/layout/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="fill_parent" android:layout_height="fill_parent" > <TextView android:id = "@+id/TextView_city" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text = "所在城市:" /> <!-- 定義一個(gè)城市信息下拉菜單--> <Spinner android:id = "@+id/Spinner_city" android:layout_width = "wrap_content" android:layout_height ="wrap_content" > </Spinner > </LinearLayout>
(3)SpinnerActivity.java 代碼
package cn.com;
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.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
public class SpinnerActivity 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
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//第一步:添加一個(gè)下拉列表項(xiàng)的list,這里添加的項(xiàng)就是下拉列表的菜單項(xiàng)
list.add("北京");
list.add("上海");
list.add("深圳");
list.add("福州");
list.add("廈門");
myTextView = (TextView)findViewById(R.id.TextView_city);
mySpinner = (Spinner)findViewById(R.id.Spinner_city);
//第二步:為下拉列表定義一個(gè)適配器,這里就用到里前面定義的list。
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, list);
//第三步:為適配器設(shè)置下拉列表下拉時(shí)的菜單樣式。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//第四步:將適配器添加到下拉列表上
mySpinner.setAdapter(adapter);
//第五步:為下拉列表設(shè)置各種事件的響應(yīng),這個(gè)事響應(yīng)菜單被選中
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);
}
});
/*下拉菜單彈出的內(nèi)容選項(xiàng)觸屏事件處理*/
mySpinner.setOnTouchListener(new Spinner.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
/**
*
*/
return false;
}
});
/*下拉菜單彈出的內(nèi)容選項(xiàng)焦點(diǎn)改變事件處理*/
mySpinner.setOnFocusChangeListener(new Spinner.OnFocusChangeListener(){
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
}
});
}
}
運(yùn)行結(jié)果如下圖所示:


補(bǔ)充:Spinner控件用法示例2則
用法1:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context="com.example.mars_2100_spinner.MainActivity" tools:ignore="MergeRootFrame" > <Spinner android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/SpinnerId"/> </LinearLayout>
package com.example.mars_2100_spinner;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends ActionBarActivity {
private static final String[] m_arr = {"第一組","第二組","第三組"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner _spin = (Spinner)findViewById(R.id.SpinnerId);
ArrayAdapter<String> ada = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, m_arr);
ada.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
_spin.setAdapter(ada);
_spin.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){
dispToast("選擇的是"+m_arr[arg2]);
arg0.setVisibility(View.VISIBLE);
}
public void onNothingSelected(AdapterView<?> arg0){
//
}
});
/*if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
}*/
}
public void dispToast(String str){
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
}
}
}
用法2:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context="com.example.mars_2100_spinner.MainActivity" tools:ignore="MergeRootFrame" > <Spinner android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/SpinnerId2"/> <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <Spinner android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/SpinnerId3"/> <TextView android:id="@+id/textView2" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
package com.example.mars_2100_spinner;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.os.Build;
public class Main02Activity extends Activity {
static final String[] CONSTELLATIONS = new String[] { "白羊座", "金牛座", "雙子座", "巨蟹座", "獅子座", "處女座", "天枰座", "天蝎座", "射手座", "魔蝎座", "水瓶座", "雙魚座" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main02);
final TextView txt2 = (TextView) findViewById(R.id.textView1);
Spinner s1 = (Spinner) findViewById(R.id.SpinnerId2);
final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s1.setAdapter(adapter);
s1.setPrompt("測(cè)試");
s1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
txt2.setText(adapter.getItem(position).toString());
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
txt2.setText("沒選中的");
}
});
final TextView txt4 = (TextView) findViewById(R.id.textView2);
Spinner s2 = (Spinner) findViewById(R.id.SpinnerId3);
ArrayAdapter<CharSequence> adapterC = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, CONSTELLATIONS);
adapterC.setDropDownViewResource(android.R.layout.simple_spinner_item);
s2.setAdapter(adapterC);
s2.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
txt4.setText(CONSTELLATIONS[position]);
}
public void onNothingSelected(AdapterView<?> parent) {
txt4.setText("沒選中的");
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main02, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main02, container, false);
return rootView;
}
}
}
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Mars_2100_Spinner</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string-array name="planets_array"> <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 name="title_activity_main02">Main02Activity</string> </resources>
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- Android實(shí)現(xiàn)下拉菜單Spinner效果
- Android Spinner 下拉菜單的使用
- android 之Spinner下拉菜單實(shí)現(xiàn)級(jí)聯(lián)
- Android實(shí)現(xiàn)聯(lián)動(dòng)下拉框 下拉列表spinner的實(shí)例代碼
- Android中Spinner(下拉框)控件的使用詳解
- Android下拉列表spinner的實(shí)例代碼
- Android下拉列表(Spinner)效果(使用C#和Java分別實(shí)現(xiàn))
- Android Spinner與適配器模式詳解及實(shí)例代碼
- android下拉刷新ListView的介紹和實(shí)現(xiàn)代碼
- Android編程之下拉菜單Spinner控件用法示例
相關(guān)文章
Android如何用自定義View實(shí)現(xiàn)雪花效果
這篇文章主要介紹了Android如何用自定義View實(shí)現(xiàn)雪花效果,對(duì)特效感興趣的同學(xué)可以參考下2021-04-04
Android基于AlarmManager實(shí)現(xiàn)用戶在線心跳功能示例
這篇文章主要介紹了Android基于AlarmManager實(shí)現(xiàn)用戶在線心跳功能,結(jié)合檢測(cè)用戶在線功能實(shí)例形式分析了AlarmManager全局定時(shí)器的功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-10-10
Android列表組件ListView使用詳解之動(dòng)態(tài)加載或修改列表數(shù)據(jù)
今天小編就為大家分享一篇關(guān)于Android列表組件ListView使用詳解之動(dòng)態(tài)加載或修改列表數(shù)據(jù),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
flutter仿微信底部圖標(biāo)漸變功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了flutter仿微信底部圖標(biāo)漸變功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Android實(shí)現(xiàn)app開機(jī)自啟動(dòng)功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)app開機(jī)自啟動(dòng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Retrofit網(wǎng)絡(luò)請(qǐng)求框架之注解解析和動(dòng)態(tài)代理
這篇文章主要介紹了Retrofit網(wǎng)絡(luò)請(qǐng)求框架之注解解析和動(dòng)態(tài)代理,Retrofit是目前Android平臺(tái)上比較流行的網(wǎng)絡(luò)請(qǐng)求框架之一,它提供了一種簡(jiǎn)潔、靈活的方式來處理HTTP請(qǐng)求和響應(yīng)2023-03-03

