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

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”

你可能感兴趣的:(AndroidStudio)