Android-spinner

添加spinner控件

    在布局文件中插入<spinner/>标签

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
android:id="@+id/linearLayout"
android:gravity="center"
xmlns:android="http://schemas.android.com/apk/res/android">
<Spinner
android:id="@+id/spinner"
android:background="#ededed"
android:layout_width="160dp"
android:layout_height="wrap_content"/>
</LinearLayout>

android:entries

    静态绑定数据,在value目录下创建arrays.xml,向其<resource/>中加入

1
2
3
4
5
6
<string-array name="spinner_list_content">
<item>java</item>
<item>python</item>
<item>c++</item>
<item>php</item>
</string-array>

    在spinner的布局中引用

1
android:entries="@array/spinner_list_content"

android:spinnerMode

    有两种显示方式,下拉菜单和弹出框,通过android:spinnerMode设置

1
android:spinnerMode="dropdown"

1
android:spinnerMode="dialog"

android:prompt

    dialog选择列表时的提示,在xml中选择这个字符串时只能调用string.xml中的值,不能直接填字真是操蛋

1
android:prompt="@string/spinner_prompt"

spinner的方法

动态添加spinner列表

1
2
3
4
5
6
7
8
9
    private void init() {
spinner = findViewById(R.id.spinner);
// 这个数组完全可以用List<String>取代
String[] starArray = new String[]{"java","python","kotlin","php"};
// 创建adapter
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,starArray);
// 设置adapter
spinner.setAdapter(arrayAdapter);
}

设置顶部提示

    doalog模式下顶部的提示

1
spinner.setPrompt("请选择一个语言");

默认选择项

    如果有添加选择监听器,会响应一次选择监听

1
spinner.setSelection(0);

选择监听器

    选择列表项时响应

1
2
3
4
5
6
7
8
9
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this,"选择了" + starArray[i],Toast.LENGTH_SHORT).show();
}

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