Spinner基本用法汇总1

Android AUmaWSsSoi 2个月前 (04-22) 61次浏览 0个评论
文章目录[隐藏]

问题:

Spinner在android中感觉用的次数不是很多,每次用到的时候都得百度一遍,找几篇简书上的文章看看,查查具体API的用法,今天心血来潮,想要汇总一遍,以后再用到Spinner的话,就直接在我这个站点上找了,方便直接。

 

常规用法:

Spinner基本用法汇总1

参考效果图所示:

1.纯xml配置

第一个spinner效果,用的是基本的用法,没有编写代码,只是在xml里面配置一番

<Spinner
    android:id="@+id/category_spinner_1"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:entries="@array/category_spinner_values" />

category_spinner_values的内容为

<string-array name="category_spinner_values">
    <item>文学</item>
    <item>艺术</item>
    <item>医学</item>
    <item>计算机</item>
    <item>心理学</item>
</string-array>

2. 代码设置adapter

private List<String> categories = new ArrayList<>(Arrays.asList("文学", "艺术", "医学", "计算机", "心理学"));
categorySpinner2 = findViewById(R.id.category_spinner_2);
categorySpinner3 = findViewById(R.id.category_spinner_3);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
categorySpinner2.setAdapter(arrayAdapter);
categorySpinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "选中的分类是: " + categories.get(position), Toast.LENGTH_LONG).show();
}

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

}
});

android.R.layout.simple_spinner_item是spinner默认的展示风格,当然了我们也可以自定义的。

android.R.layout.simple_spinner_item.xml的内容,看看系统源码是如何实现的。

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:textAlignment="inherit"/>

3.自定义Spinner的选择样式效果

效果可以参考上图,给每一行加上分隔线

categorySpinner3.setAdapter(new ArrayAdapter<String>(this, R.layout.simple_spinner_item, android.R.id.text1, categories));
categorySpinner3.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(MainActivity.this, "选中的分类是: " + categories.get(position), Toast.LENGTH_LONG).show();
    }

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

    }
});
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="wrap_content">

    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/text1"
        style="?android:attr/spinnerItemStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:paddingBottom="4dp"
        android:paddingTop="4dp"
        android:singleLine="true"
        android:textAlignment="inherit" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:background="#dddddd" />

</LinearLayout>

以上simple_spinner_item.xml的布局内容。

4.获取点击item后的值。

在上面的setOnItemSelectedListener()中,onItemSelected()方法内部做处理,就可以获取到选中item的值了。


java问与答 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:http://javaexception.com/archives/48
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址