AndroidStudio 备忘录之Spinner(下拉列表)

本文详细介绍了Android Studio中Spinner的使用,包括如何更改Spinner的样式、调整下拉框出现的位置以及定制下拉框样式。通过创建自定义布局和适配器实现更丰富的效果。虽然Spinner无法直接实现多列效果,但可以借助GridView达到类似目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spinner的相关属性:

属性功能
android:dropDownHorizontalOffset设置列表框的水平偏移距离
android:dropDownVerticalOffset设置列表框的水平竖直距离
android:dropDownSelector列表框被选中时的背景
android:dropDownWidth设置下拉列表框的宽度
android:gravity设置里面组件的对其方式
android:popupBackground设置列表框的背景
android:prompt设置对话框模式的列表框的提示信息(标题),只能够引用string.xml 中的资源id,而不能直接写字符串
android:spinnerMode列表框的模式,有两个可选值: dialog:对话框风格的窗口 dropdown:下拉菜单风格的窗口(默认)
可选属性:android:entries使用数组资源设置下拉列表框的列表项目

Spinner遇到的问题:

1.改spinner样式:

<Spinner
    android:layout_width="19dp"
    android:layout_height="19dp"
    android:background="@mipmap/ceshi2_spcircle_back">

2.修改spinner下拉框出现位置:

<Spinner
    android:layout_width="19dp"
    android:layout_height="19dp"
    android:background="@mipmap/ceshi2_spcircle_back"
    android:dropDownHorizontalOffset="10dp"
    android:dropDownVerticalOffset="15dp">
</Spinner>

3.改spinner下拉框样式:

√ 添加为Spinner创建的适配器adapter如下语句,其中"choosebtn_item"为自定义布局

adapter.setDropDownViewResource(R.layout.choosebtn_item);

※ 需要注意的是如果用的是ArrayAdapter(数组适配器)则适配的是TextView控件,对于比较复杂的下拉列表样式则很有局限。可选择使用SimpleAdapter(简单适配器),实例用法:

String[] num = new String[]{"01", "02", "03", "04", "05","06", "07", "08", "09", "10"};
int images[] = new int[]{……}
data = new ArrayList<Map<String, Object>>();
for (int i = 0; i < num.length; i++) {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("images", images);
    map.put("num", num[i]);
    data.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(this, data,
        android.R.layout.simple_spinner_item, new String[] { "images", "num" },
        new int[] { R.id.images, R.id.num});
adapter1.setDropDownViewResource(R.layout.choosebtn_item);
_activity_test_spinner.setAdapter(adapter);

但是Spinner并不能实现多列的效果(目前没找到办法),想要多列的下拉框效果可以使用“GridView”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值