Spinner的使用

来源:互联网 发布:淘宝在哪里拿货的 编辑:程序博客网 时间:2024/06/08 19:03

1.最简单的Spinner

在布局文件中添加Spinner控件

<LinearLayout         android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:orientation="vertical" >        <Spinner            android:id="@+id/spinner1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:entries="@array/languages"          />    </LinearLayout>

其中android:entries=”@array/languages”表示Spinner的数据集合是从资源数组languages中获取的,languages数组资源定义在values/arrays.xml中:

<?xml version="1.0" encoding="utf-8"?><resources>    <string-array name="languages">        <item>c语言</item>        <item>java </item>        <item>php</item>        <item>xml</item>        <item>html</item>    </string-array></resources>

运行结果:
运行结果:


2.设置Spinner的Adapter

上面使用Spinner数据源于xml数组,其实用的最多的还是通过adapter来跟Spinner绑定数据。

使用ArrayAdapter

// 初始化控件Spinner spinner = (Spinner) findViewById(R.id.spinner1);// 建立数据源String[] mItems = getResources().getStringArray(R.array.languages);// 建立Adapter并且绑定数据源ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//绑定 Adapter到控件spinner .setAdapter(adapter);spinner.setOnItemSelectedListener(new OnItemSelectedListener() {    @Override    public void onItemSelected(AdapterView<?> parent, View view,             int pos, long id) {        String[] languages = getResources().getStringArray(R.array.languages);        Toast.makeText(MainActivity.this, "你点击的是:"+languages[pos], 2000).show();    }    @Override    public void onNothingSelected(AdapterView<?> parent) {        // Another interface callback    }});
  • 这是Spinner的标准使用方法,其中,有两行代码可以决定Spinner的外观:
    ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);
    • 1 第二个参数是Spinner未展开菜单时Spinner的默认样式,android.R.layout.simple_spinner_item是系统自带的内置布局。
    • 2 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      设置的是展开的时候下拉菜单的样式(注意和上面区别),同理android.R.layout.simple_spinner_dropdown_item也是内置布局。如果不设置
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)会怎样呢?会造成未展开的sipnner和展开的菜单都是一种布局样式。

3.使用自定义的BaseAdapter
这种情况适用于spinner比较复杂的情况,比如带有图标。
和listView里使用方式一致。


下面介绍Spinner的菜单显示方式
它有两种显示形式,一种是下拉菜单,一种是弹出框,菜单显示形式是spinnerMode属性决定的:

android:spinnerMode="dropdown"android:spinnerMode="dialog"

Spinner的xml属性
1 entries: 直接在xml布局文件中绑定数据源(可以不设置,即可以在Activity中动态绑定)

2 spinnerMode: Spinner的显示形式

除此之外还有如下属性:

prompt:在Spinner弹出选择对话框的时候对话框的标题:
这里写图片描述
属性名称
3 android:dropDownHorizontalOffset
对应方法:

setDropDownHorizontalOffset(int)

spinnerMode=”dropdown”时,下拉的项目选择窗口在水平方向相对于Spinner窗口的偏移量。
它必须是一个带有单位的浮点型尺寸值,如:”14.5sp”。有效的单位包括:px(像素)、dp(密度无关的像素)、sp(基于引用字体的尺寸来缩放的像素)、in(英寸)、mm(毫米)。
属性名称
4 android:dropDownSelector
用于设定spinnerMode=”dropdown”时列表选择器的显示效果。
5.android:dropDownVerticalOffset
对应方法:

setDropDownVerticalOffset(int)

spinnerMode=”dropdown”时,下拉的项目选择窗口在垂直方向相对于Spinner窗口的偏移量。
6.android:dropDownWidth
对应方法:

setDropDownWidth(int)

在spinnerMode=”dropdown”时,设定下拉框的宽度。
7.android:gravity
对应方法:

setGravity(int)

这个属性用于设置当前选择的项目的对齐方式。
8.android:popupBackground
对应方法:

setPopupBackgroundResource(int)

在spinner=”dropdown”时,使用这个属性来设置下拉列表的背景。