Android笔记系列--Spinner

菜单数据集

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星点点-

请我喝杯咖啡呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值