欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android笔记系列--Spinner

程序员文章站 2022-07-04 18:50:26
...

菜单数据集

values/arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="anim_type">
        <item>淡入淡出效果</item>
        <item>放大淡出效果</item>
        <item>转动淡出效果1</item>
        <item>转动淡出效果2</item>
        <item>左上角展开淡出效果</item>
        <item>压缩变小淡出效果</item>
        <item>右往左推出效果</item>
        <item>下往上推出效果</item>
        <item>左右交错效果</item>
        <item>放大淡出效果</item>
        <item>缩小效果</item>
        <item>上下交错效果</item>
    </string-array>
</resources> 

布局设置

spinner 的xml属性:
1) entries:表示Spinner的数据集合是从资源数组anim_type中获取的
2) spinnerMode: Spinner的显示形式
3) prompt:在Spinner弹出选择对话框的时候对话框的标题
4) dropDownHorizontalOffset 对应方法:setDropDownHorizontalOffset(int)

spinnerMode=”dropdown”时,下拉的项目选择窗口在水平方向相对于Spinner窗口的偏移量。

它必须是一个带有单位的浮点型尺寸值,如:”14.5sp”。有效的单位包括:px(像素)、dp(密度无关的像素)、sp(基于引用字体的尺寸来缩放的像素)、in(英寸)、mm(毫米)。

这个属性还可以引用一个资源(格式:@[package:]type:name)或者是包含这种类型值的主题属性(格式:?[package][type:]name)。

这个属性对应全局属性资源符号dropDownHorizontalOffset。

5) android:dropDownSelector

用于设定spinnerMode=”dropdown”时列表选择器的显示效果。

它可以用”@[+][package]:type:name”格式来引用另外的资源,或者是用”?[package:][type:]name”的格式来 应用主题属性,还可以是”#rgb”、”#argb”、”#rrggbb”、”aarrggbb”格式的颜色值。

它对应的全局属性资源符号是dropDownSelector。

6) android:dropDownVerticalOffset
对应方法:setDropDownVerticalOffset(int)

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

这个属性它必须是一个带有单位的浮点型尺寸值,如:”14.5sp”。有效的单位包括:px(像素)、dp(密度无关的像素)、sp(基于引用字体的尺寸来缩放的像素)、in(英寸)、mm(毫米)。

还可以引用一个资源(格式:@[package:]type:name)或者是包含这种类型值的主题属性(格式:?[package][type:]name)。

这个属性对应全局属性资源符号dropDownVerticalOffset。

7) android:dropDownWidth 对应方法:setDropDownWidth(int)

在spinnerMode=”dropdown”时,设定下拉框的宽度。

这个属性可以是带有单位的浮点型的尺寸值,如:14.5sp。有效的单位包括:px(像素)、dp(密度无关的像素)、sp(基于引用字体的尺寸来缩放的像素)、in(英寸)、mm(毫米)。

还可以引用一个资源(格式:@[package:]type:name)或者是包含这种类型值的主题属性(格式:?[package][type:]name)。

还可以是下列常量之一:

fill_parent = -1,下拉框的宽度应该使用屏幕的宽度来设定。这个常量从API Level 8开始被废弃了,并且使用mach_parent常量来代替。

mach_parent = -1,下拉框的宽度应该使用屏幕的宽度来设定。在API Level 8中被引入。

wrap_content = -2,下拉框的宽度应该跟它的内容相适应。

它对应的全局资源符号是dropDownWidth。

8) android:gravity 对应方法:setGravity(int)

这个属性用于设置当前选择的项目的对齐方式。

它必须是以下常量值之一或组合(用”|”符号分离)。

  • top = 0x30:把选择的对象放到它的容器的顶部,不改变它的尺寸。
  • bottom = 0x50:把选择的对象放到它的容器的底部,不改变它的尺寸。
  • left = 0x03:把选择的对象放到它的容器的左边,不改变它的尺寸。
  • right = 0x05:把选择的对象放到它的容器的右边,不改变它的尺寸。
  • center_vertical = 0x10:把选择的对象放到它的容器的垂直中心,不改变它的尺寸。
  • fill_vertical = 0x70:为了完全的填充它的容器,系统会根据需要来增加选择对象的垂直尺寸。
  • center_horizontal = 0x01:把选择的对象放到它的容器的水平中心,不改变它的尺寸。
  • fill_horizontal = 0x07:为了完全的填充它的容器,系统会根据需要来增加选择对象的水平尺寸。
  • center = 0x11:把选择的对象放到它的容器的垂直和水平中心,不改变它的尺寸。
  • fill = 0x77:为了完全的填充它的容器,系统会根据需要来增加选择对象的水平和垂直尺寸。
  • clip_vertical = 0x80:附加的可选设置,它可以设置容器内子对象的上下边缘裁剪它的容器边框。裁剪会基于垂直对齐的方式:顶部对齐的会裁剪底部边缘,底部对齐的会裁剪顶部边缘,不会上下边缘都裁剪。
  • clip_horizontal = 0x08:附加的可选设置,它可以设置容器内子对象的左右边缘裁剪它的容器边框。裁剪会基于水平对齐的方式:左对齐的会裁剪右边缘,右对齐的会裁剪左边缘,不会左右边缘都裁剪。
  • start = 0x00800003:把对象放到它的容器的开始位置,不改变它的尺寸。
  • end = 0x00800005:把对象放到它的容器的结束位置,不改变它的尺寸。

对应的全局属性资源符号是gravity。

注:Spinner对象是一个视窗对象容器,设置它的gravity属性时,只会改变容器内部子视窗对象的对齐方式,并不会改变子视窗内部内容的对齐方式。

9) android:popupBackground 对应方法:setPopupBackgroundResource(int)

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

可以使用”@[+][package:]type:name”格式来引用另外的资源,或者使用”?[package:][type:]name”格式来应 用主题属性,也可以使用”#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”格式的颜色值。

对应的全局属性资源符号是popupBackground

例子

anim_type数组资源定义在values/arrays.xml中:

<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/anim_type"
      />
</LinearLayout>

或者在代码中设置数据集

Spinner spinner = (Spinner) findViewById(R.id.animation_sp); 
// 通过资源文件获取Spinner填充内容
String[] types = getResources().getStringArray(R.array.anim_type);
// 建立Adapter并且绑定数据源
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, types);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// 绑定 Adapter到控件
spinner.setAdapter(adapter); //设置适配器
spinner.setSelection(0); //设置默认选项

设置点击监听

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view,
                    int pos, long id) {
        String[] type = getResources().getStringArray(R.array.anim_type);
        Toast.makeText(MainActivity.this, "你点击的是:"+type[pos], 2000).show();
    }
    @Override
    public void onNothingSelected(AdapterView<?> parent) {
                // Another interface callback
    }
});

Spinner的菜单显示方式

它有两种显示形式,一种是下拉菜单,一种是弹出框。

菜单显示形式是spinnerMode属性决定的:

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

在android2.3上没有这个属性,系统默认将Spinner弹出菜单显示成dialog。

相关标签: Spinner