Spinner 简介

Spinner 提供了快速从一个数据集中选择一个值的方法,默认显示的是当前选择的值,点击可以显示下拉列表,用户可以列表中选择一个新值。

spinner有两种显示模式dialog和dropdown,有不同的属性对应使用:

spinner源码中的片段


switch (mode) {
case MODE_DIALOG: {
mPopup = new DialogPopup();
break;
}

case MODE_DROPDOWN: {
DropdownPopup popup = new DropdownPopup(context, attrs, defStyle);

......
}











dialog 0 Spinner options will be presented to the user as a dialog window.
dropdown 1 Spinner options will be presented to the user as an inline dropdown
anchored to the spinner widget itself.

首先可以在xml layout 中添加一个spinner

<Spinner
android:id="@+id/planets_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

sinner显示的数据用一个adapter来适配,和ListView,GradView,

可以在xml定义一个String 数组


<?xml version="1.0" encoding="utf-8"?>
<resources>
<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>
</resources>

在activity或fragment中使用代码完成绑定

ArrayAdapter中初始化的那个layout(自带布局文件是一个TextView id是“@android:id/text1”),是用来渲染spinner被选择的item的样式,而setDropDownResource这个layout(自带布局文件是一个CheckedTextView id是"@android:id/text1"),则是弹出框时用的item样式。

你可以通过这两个layout自定义样式,但是要注意第一个也就是ArrayAdapter的layout是显示的item的layout,而spinner本身还有个背景,直接设置spinner的背景即可。


Spinner spinner =(Spinner) findViewById(R.id.spinner);
//创建一个数组适配器,参数1为context上下文,参数2为绑定的数据,这里是一个数组,一般用List,参数3是系统默认的spinner布局
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);
//最后spinner设置样式
spinner.setAdapter(adapter);

当用户从下拉列表选择一个item时,spinner收到一个item已选择的事件,定义一个实现 AdapterView.OnItemSelectedListener接口的监听器,实现onItemSelected()
方法。


public class SpinnerActivity extends Activity implements OnItemSelectedListener {
...

public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
//获得绑定数据的一个item
// parent.getItemAtPosition(pos)
}

public void onNothingSelected(AdapterView<?> parent) {
// 没选择值时
}
}

第一次进入activity时,会执行一次onItemSelected() 方法

最后设置监听器

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(this);

时间: 2024-11-05 05:13:48

Spinner 简介的相关文章

Android学习——Spinner实现下拉列表

一.Spinner简介 在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可.这是在Web开发中一个必不可少的交互性组件,而在Android中的对应实现就是Spinner. 在编码的同时,首先需要在布局中设定Spinner组件,然后将可选内容通过ArrayAdapter和下拉列表连接起来,最后要获得用户选择的选项,我们需要设计事件监听器setOnItemSelectedListener并实现on

Spinner的样式大致简介

Spinner Spinner 是一个列表选择框,会在用户选择后,展示一个列表供用户进行选择.Spinner是ViewGroup的间接子类,它和其他的Android控件一样,数据需要使用Adapter进行封装. 下面介绍一下Spinner的常用XML属性,Android也为其属性提供了相应的getter.setter方法: android:spinnerMode:列表显示的模式,有两个选择,为弹出列表(dialog)以及下拉列表(dropdown),如果不特别设置,为下拉列表.. android

Android Spinner使用简介

Android中使用Spinner作为下拉列表,下面直接看实现方式: (1)使用ArrayAdapter来实现: 实现步骤: 1. 在布局文件中定义Spinner组件: 2. 向Spinner添加需要的数据,可以在XML文件中定义列表数据,也可以在Java代码中设置: 3. 设置监听器setOnItemSelectedListener,并实现onItemSelected方法: 先看在Java代码中添加下拉列表的数据: MainActivity.java package com.xiaozhang

【转】GitHub 排名前 100 的安卓、iOS项目简介

GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者快速了解当前一些流行的 Android 开源库. 项目名称 项目简介 1. react-native 这 个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 Re

Android第二节(view简介以及Android布局管理器),维维复习

布局管理器是指定View之间的排列方式的.view就是UI控件,下节课我会整理到,这里我们先讲布局,大布局在我看来就相当于一个房间,让view显示,就是说物品在房间的摆放规则. 一.View的简介 View ,一般都有TextView,EditText,Button,RadioButton,CheckBox,ImageView,ImageButton. ViewGroup,一般有LinearLayout,RelativeLayout,FrameLayout,Spinner,ListView,Gr

【Android 应用开发】 ActionBar 样式详解 -- 样式 主题 简介 Actionbar 的 icon logo 标题 菜单样式修改

作者 : 万境绝尘 ([email protected]) 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/39269163 示例代码下载 : -- GitHub : https://github.com/han1202012/Octopus_ActionBarStyle.git -- CSDN : http://download.csdn.net/detail/han1202012/7926959 一. 样式 和 主题 资源

Instrumentation安卓官方简介(个人认为是HighLevel抽象出来的最简介明了的阐述)

官方连接:http://developer.android.com/tools/testing/testing_android.html中间Instrumentation段落 (百度出来的Instrumentation的阐述大部分不是经过阉割就是过于冗长,看得人云里雾去的,此文翻译了官方的简介,从高层把Instrumentation框架做的阐述,以Q&A的思路说明白了究竟Instrumentation是怎么一回事.希望能对Instrumentation的初学者有所帮助) Instrumentat

64.GitHub 排名前100的android项目简介

GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者快速了解当前一些流行的 Android 开源库. 项目名称 项目简介 1. react-native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 Rea

2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)

排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者快速了解当前一些流行的 Android 开源库. 项目名称 项目简介 1. react-native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native, 该框架结合了 Web 应用和 Native 应用的