Spinner的使用

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”时,使用这个属性来设置下拉列表的背景。

猜你喜欢

转载自blog.csdn.net/stimgo/article/details/77989507