android之spinner控件用法详解(上)

1,210 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

前言

spinner控件是android提供的下拉列表选择框,主要有两个,一个是 android.widget包下的spinner,一个是androidx.appcompat.widget.AppCompatSpinner。两者并没有什么太大区别,主要是AppCompatSpinner兼容低版本,AppCompatSpinner继承自 android.widget.spinner。

spinner的常用属性

  • spinnerMode:设置下拉列表的模式(dialog-弹窗式, dropdown-下拉式);
  • dropDownWidth:设置下拉列表框的宽度;
  • dropDownSelector:下拉列表框item的选中状态设置;
  • popupBackground:设置弹窗列表的背景;
  • dropDownHorizontalOffse:设置列表框相对spinner的水平偏移距离;
  • dropDownVerticalOffset:设置列表框相对spinner的竖直偏移距离;
  • entries(可选):使用数组资源设置下拉列表框的列表数据;

spinner的基本使用

spinner可以在xml中通过entries设置下拉数据,也可以通过适配器绑定数据。

通过entries设置固定数据下拉列表框的使用

1.在values文件夹下创建arrays.xml 存放数据

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <resources>
        <string-array name="phone_data">
            <item>手机</item>
            <item>住宅</item>
            <item>单位</item>
            <item>传真</item>
            <item>电报</item>
            <item>彩信</item>
            <item>其他</item>
            <item>自定义</item>
        </string-array>
    </resources>
</resources>

2.spinner控件设置entries属性

<Spinner
    android:id="@+id/spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@null"
    android:entries="@array/phone_data"
    android:spinnerMode="dropdown" />

3.数据监听

Spinner spinner = findViewById(R.id.spinner);
//设置默认选择
spinner.setSelection(0);
//下拉列表选择监听
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        
    }
    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
});

通过适配器绑定数据

spinner.setAapter()传入的对象为SpinnerAdapter,自定义的适配器需实现SpinnerAdapter接口 1.spinner_item.layout

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@null"
    android:ellipsize="end"
    android:gravity="center_vertical"
    android:maxLines="1"
    android:paddingHorizontal="11dp"
    android:textAlignment="viewStart" />

2.adapter绑定数据

String[] data = getResources().getStringArray(R.array.phone_data);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
});

以上是spinner控件基本的使用与介绍,相关:android之spinner控件用法详解(下)

题外话: 经历这三年多的疫情,时间更像流水般逝去,感觉什么也没干,哪也没有去,年龄增长不少,但不管怎样平安健康才是最重要的,世界和平~