android基础---->Spinner的使用

  Spinner提供了一个快速的方式从集合中选择值。在默认状态下,一个Spinner显示的是当前选择的值。触摸Spinner会显示一个下拉菜单,用户可以从中选择一个值。今天我们就开始Spinner的学习。

项目结构如下:

在xml文件中定义一个spinner,如下:

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

在Spinner中增加一个选择列表,你需要在你的Activity或者Fragment代码中指定一个SpinnerAdapter。

在Spinner中增加一个选择列表

Spinner中的列表内容可以来自任何来源,但是需要一个SpinnerAdapter,比如如果选择内容是一个数组,那么Adapter是ArrayAdapter,再或者选择内容来自于数据库查询,那么Adapter是CursorAdapter。

例如如果选择内容是预先确定的,你可以在string的资源文件中指定一个array内容。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="spinner_array">
        <item>Linux</item>
        <item>Huhx</item>
        <item>LiuLi</item>
        <item>ChenHui</item>
        <item>Android</item>
    </string-array>
</resources>

在Activity或者Fragment中提供一个ArrayAdapter的实例,如下:

spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

createFromResource方法允许你从一个字符数组中创建一个ArrayAdapter。第二个参数是在资源文件中定义的数组,第三个参数是定义spinner选择的方式。simple_spinner_item.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:textAlignment="inherit"/>

然后你需要调用setDropDownViewResource方法去指定spinner列表中的布局:support_simple_spinner_dropdown_item.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@android:id/text1"
          style="?attr/spinnerDropDownItemStyle"
          android:singleLine="true"
          android:layout_width="match_parent"
          android:layout_height="?attr/dropdownListPreferredItemHeight"
          android:ellipsize="marquee"/>

响应用户选择spinner的事件

当用户在下拉菜单中选择一行,Spinner对象接收一个on-item-selected事件:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        Log.i(TAG, "viewa: " + view + ", parent: " + parent + ", position: " + position + ", id: " + id);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        Log.i(TAG, "on nothing selected");
    }
});

运行效果如下:

时间: 2024-10-05 04:45:33

android基础---->Spinner的使用的相关文章

Android基础入门教程——2.3.12 Date &amp; Time组件(下)

Android基础入门教程--2.3.12 Date & Time组件(下) 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来继续学习Android系统给我们提供的几个原生的Date & Time组件,他们分别是: DatePicker(日期选择器),TimePicker(时间选择器),CalendarView(日期视图),好吧, 其实一开始让我扣这几个玩意我是拒绝的,因为在我的印象里,他们是这样的: 简直把我丑哭了,有木有,终于知道为什么那么多人喜欢自定义这种类型的

2015年最新Android基础入门教程目录(完结版)

2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全套教程 共148节已编写完毕,附上目录,关于教程的由来,笔者的情况和自学心得,资源分享 以及一些疑问等可戳:<2015最新Android基础入门教程>完结散花~ 下面是本系列教程的完整目录: 第一章:环境搭建与开发相关(已完结 10/10) Android基础入门教程--1.1 背景相关与系统架构

2015年最新Android基础入门教程目录(临时版)

2015年最新Android基础入门教程目录(临时版) 标签(空格分隔): Android基础入门教程 前言: 嗯,昨晚又给人盗号了,博客上被发表了十几篇黄贴-然后目录给管理误删了,再发一次 后来协商后发现实被设密保问题了,建议各位用csdn的朋友密保自己设置一波~ 密保问题已修改回来了,应该不会再被盗号了-人怕出名猪怕壮哈~下次如果发现博客被封 告知下小猪,如何很急的话可以先到w3c鸟巢菜鸟教程上看Android基础入门教程 经过站长FK进行排版的,可能阅读体验会比csdn好很多!内容基本是同

Android基础入门教程——2.5.4 其他几种常用对话框基本使用

Android基础入门教程--2.5.4 其他几种常用对话框基本使用 标签(空格分隔): Android基础入门教程 本节引言: 上节我们对Dialog的父类:AlertDialog进行了学习,而本节我们来学习下几个常用的 Dialog的基本使用,他们分别是:ProgressDialog(进度条对话框),DatePickerDialog (日期选择对话框)和TimePickerDialog(时间选择对话框)~,话不多说,开始本节内容~ 1.ProgressDialog(进度条对话框)的基本使用

Android基础控件使用汇总

平时写代码总会遇到一些问题,准备写一个比较基础的控件使用汇总系列!本系列持续不定期更新,希望能够帮到需要的朋友!get! Android基础控件使用细节--TextView Android基础控件使用细节--Button Android基础控件使用细节--EditText Android基础控件使用细节--ImageView Android基础控件使用细节--WebView Android基础控件使用细节--ListView Android基础控件使用细节--Menu Android基础控件使用

android基础知识

1. 前言 1.1. 什么是3G.4G Ÿ 第三代移动通信技术(3rd - Generation),速率一般在几百Kbps,较之前的2G和2.5G在数据传输速度上有很大提升. Ÿ 第四代移动通信技术(4th - Generation),速度可达到100Mbps以上,几乎可以满足人们的所有传输数据的需求. Ÿ 目前主流的3G技术标准有三种: WCDMA:全球80%以上的3G网络都是采用此种制式.中国联通运营.186 CDMA2000:目前日韩及北美使用较多.中国电信运营. 189 TD-SCDMA

Android基础入门教程——10.12 传感器专题(3)——加速度-陀螺仪传感器

Android基础入门教程--10.12 传感器专题(3)--加速度/陀螺仪传感器 标签(空格分隔): Android基础入门教程 本节引言: 本节继续来扣Android中的传感器,本节带来的是加速度传感器(Accelerometer sensor)以及 陀螺仪传感器(Gyroscope sensor),和上一节的方向传感器一样有着x,y,z 三个轴, 还是要说一点:x,y轴的坐标要和绘图那里的x,y轴区分开来!传感器的是以左下角 为原点的!x向右,y向上!好的,带着我们的套路来学本节的传感器吧

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来

Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2

Android基础入门教程--8.1.2 Android中的13种Drawable小结 Part 2 标签(空格分隔): Android基础入门教程 本节引言: 本节我们继续来学习Android中的Drawable资源,上一节我们学习了: ColorDrawable:NinePatchDrawable: ShapeDrawable:GradientDrawable!这四个Drawable~ 而本节我们继续来学习接下来的五个Drawable,他们分别是: BitmapDrawable:Insert