android学习---Spinner控件
2014-08-03 10:49
218 查看
Spinner 有点像下拉菜单,其实是一个弹出窗口,但是是可以进行进一步操作的弹出窗口,下面我们来学习一下Spinner
![](http://img.blog.csdn.net/20140803102830750?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhpeGluaHVhY29t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
可见Spinner是继承ViewGroup的,因此也可作为容器所用。 Spinner支持如下xml属性
![](http://img.blog.csdn.net/20140803104100006?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhpeGluaHVhY29t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
详细请参考Android API文档
下面就来实战一下,如何使用Spinner
如果使用的Spinner时已经可以确定弹出窗口列表的内容,则不需要编写代码,直接给Spinner指定android:entries属性即可
(1)编写布局文件 activity_main.xml
(2) 编写下拉内容 strings.xml
完成上面两步,一个简单的Spinner效果就出来了,如图:
![](http://img.blog.csdn.net/20140803103035662?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhpeGluaHVhY29t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
如果Spinner的弹出窗口内容不是确定的,需要动态添加,那又如何实现呢? 下面我们完成一个复杂一点的Spinner案例。
说明:案例涉及Spinner的知识点有:(1)动态添加弹出窗口内容 和确定弹出窗口内容两种方式 (2)自定义弹出窗口 (3)实现Spinner监听
(1)编写布局文件 activity_main.xml
(2)编写strings.xml
(3) 编写城市array,下拉内容 city_data.xml
(4) 编写 MainActivity.java
步骤:(1)找到布局的Spinner
(2)动态添加spinner的内容list 集合
(3)定义并设置适配器ArrayAdapter
(4)给Spinner设置关联适配器
(5)给Spinner设置监听器
经过上面的步骤,到这来已经完成了一个Spinner的案例了,效果如下:
![](http://img.blog.csdn.net/20140803140051343?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhpeGluaHVhY29t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
每次选择学历,监听器都会监听改变的结果
![](http://img.blog.csdn.net/20140803140513562?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhpeGluaHVhY29t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
可见Spinner是继承ViewGroup的,因此也可作为容器所用。 Spinner支持如下xml属性
详细请参考Android API文档
下面就来实战一下,如何使用Spinner
如果使用的Spinner时已经可以确定弹出窗口列表的内容,则不需要编写代码,直接给Spinner指定android:entries属性即可
(1)编写布局文件 activity_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="match_parent" android:layout_height="match_parent"> <Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:entries="@array/language"/> </LinearLayout>
(2) 编写下拉内容 strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Spinner</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string-array name="language"> <item>英语</item> <item>中文</item> <item>日语</item> <item>韩语</item> <item>西班牙语</item> <item>法语</item> <item>俄语</item> </string-array> </resources>
完成上面两步,一个简单的Spinner效果就出来了,如图:
如果Spinner的弹出窗口内容不是确定的,需要动态添加,那又如何实现呢? 下面我们完成一个复杂一点的Spinner案例。
说明:案例涉及Spinner的知识点有:(1)动态添加弹出窗口内容 和确定弹出窗口内容两种方式 (2)自定义弹出窗口 (3)实现Spinner监听
(1)编写布局文件 activity_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/info_city" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/city_prompt" /> <Spinner android:id="@+id/mycity" android:prompt="@string/city_prompt" android:layout_width="250dp" android:layout_height="wrap_content" android:entries="@array/city" android:layout_gravity="center_vertical" android:layout_marginLeft="30dp" /> <TextView android:id="@+id/info_edu" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/education_prompt" /> <Spinner android:id="@+id/myedu" android:layout_width="250dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="30dp"/> </LinearLayout>
(2)编写strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Spinner</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="city_prompt">请选择您喜欢的城市:</string> <string name="education_prompt">请选择学历:</string> </resources>
(3) 编写城市array,下拉内容 city_data.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="city"> <item>北京</item> <item>上海</item> <item>广州</item> <item>深圳</item> <item>天津</item> <item>杭州</item> </string-array> </resources>
(4) 编写 MainActivity.java
步骤:(1)找到布局的Spinner
(2)动态添加spinner的内容list 集合
(3)定义并设置适配器ArrayAdapter
(4)给Spinner设置关联适配器
(5)给Spinner设置监听器
package com.example.spinner; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; public class MainActivity extends Activity { private Spinner spinnerEdu = null; //定义学历的spinner private Spinner spinerCity = null; //定义城市spinner @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.spinnerEdu = (Spinner) findViewById(R.id.myedu); //获取学历spinner组件 this.spinerCity = (Spinner) findViewById(R.id.mycity); //获取城市spinner组件 //参数一:上下文 参数二:内容数组 参数三:spinner样式 ArrayAdapter<CharSequence> cityAdapter = ArrayAdapter.createFromResource(this, R.array.city, android.R.layout.simple_list_item_multiple_choice); this.spinerCity.setAdapter(cityAdapter); //spinner设置适配器 this.spinerCity.setSelection(3); //默认选中 List<CharSequence> list = new ArrayList<CharSequence>(); //list集合, list.add("小学"); list.add("初中"); list.add("高中"); list.add("大专"); list.add("本科"); list.add("研究生"); list.add("博士"); //参数一:上下文 参数二:spinner样式 参数三:内容list ArrayAdapter<CharSequence> eduAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_list_item_single_choice, list); this.spinnerEdu.setAdapter(eduAdapter); //spinner设置适配器 //为spinnerEdu添加监听器 this.spinnerEdu.setOnItemSelectedListener(new OnItemSelectedListener() { @Override //选中项 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String currChose = parent.getItemAtPosition(position).toString(); Log.i("你的学历是:", currChose); } @Override public void onNothingSelected(AdapterView<?> parent) { Log.i("onNothingSelected", "onNothingSelected"); } }); } @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; } }
经过上面的步骤,到这来已经完成了一个Spinner的案例了,效果如下:
每次选择学历,监听器都会监听改变的结果
相关文章推荐
- Android 控件学习 之 Spinner?r=Android
- Android下拉列表控件spinner-andoid学习之旅(十一)
- Android学习--Spinner控件学习
- Android开发学习笔记:为动态添加的Spinner控件绑定数据源以及监听事件
- Android Spinner控件学习笔记
- Android 学习笔记(12)—— Spinner下拉控件
- Android下拉列表控件spinner-andoid学习之旅(十一)
- android学习——spinner控件
- Android Spinner控件学习笔记 二
- Android Spinner 下拉菜单控件学习
- android 学习 Spinner控件的使用
- 【android控件学习笔记】使用Spinner实现下拉列表
- Android下拉列表控件spinner-andoid学习之旅(十一)
- Android学习--动态向SPinner控件中添加数据
- 【android基础学习之四】——基础控件CheckBox,Spinner,AutoCompleteTextView,DatePicker,TimePicker
- Android UI控件Spinner控件的学习
- Android控件学习之Spinner
- Android学习之SeekBar控件
- android 下拉列表(Spinner)的学习与应用
- Android开发学习笔记-4 Activity-3 常用控件