开启掘金成长之旅!这是我参与「掘金日新计划 · 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控件用法详解(下)
题外话: 经历这三年多的疫情,时间更像流水般逝去,感觉什么也没干,哪也没有去,年龄增长不少,但不管怎样平安健康才是最重要的,世界和平~