Spinner(下拉列表)的使用

这篇具有很好参考价值的文章主要介绍了Spinner(下拉列表)的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

目录

一、介绍:

Spinner相关属性:

二、例子

例子一:(含适配器)

完整代码:

例子二(不含适配器):

完整代码:



一、介绍:

        安卓的Spinner是一个下拉菜单控件,通常用于选择一组选项中的一个。它可以为用户提供一种简单的交互方式,使其能够快速轻松地对应用程序中的数据进行选择。

        要使用Spinner,首先需要在XML布局文件中创建一个Spinner元素。这个元素必须包含一个Adapter,该Adapter负责将数据与Spinner控件绑定在一起。在Java代码中,我们需要为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控件的示例代码:

XML:

<Spinner android:id="@+id/my_spinner" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />

在上面的代码中,我们创建了一个具有id“my_spinner”的Spinner控件,并设置了其宽度和高度。接下来,我们需要将适配器与此控件绑定。以下是将ArrayAdapter与Spinner绑定的示例代码:

绑定数据:

String[] items = {"Item 1", "Item 2", "Item 3"};
ArrayAdapter<String> adapter = new ArrayAdapter<(this,android.R.layout.simple_spinner_item,items); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
Spinner spinner = findViewById(R.id.my_spinner); 
spinner.setAdapter(adapter);

在上面的代码中,我们首先定义一个包含字符串项的数组。接下来,我们创建了一个ArrayAdapter对象,并设置其资源ID和数据项。最后,我们将适配器与具有id“my_spinner”的Spinner控件绑定起来。

一旦Spinner控件被设置了适配器,我们需要为其设置一个选择监听器。以下是在Java代码中设置Spinner的选项监听器的示例代码:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // 记录当前选择的项
        String selectedItem = (String) parent.getItemAtPosition(position);
        Log.d("Spinner", "Selected item: " + selectedItem);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // 什么都不做
    }
});

        在上面的代码中,我们创建了一个匿名AdapterView.OnItemSelectedListener对象,并将其分配给Spinner控件。当用户选择一个项时,onItemSelected方法将被调用,并且我们可以读取所选的选项。如果用户没有选择任何项,则onNothingSelected方法将被调用。

        通过使用Spinner控件,我们可以轻松地让用户在应用程序中进行选择,并在选择时执行适当的操作。无论是在表单中选择选项还是在应用程序中选择不同的视图,Spinner都是一个很有用的工具。

完整代码:

activity_main:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Spinner
        android:id="@+id/my_spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

MainActivity:

package com.example.spinnerdemo02;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class MainActivity extends AppCompatActivity {
    private Spinner spinner;
    // 下拉列表的数据
    String[] items;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 初始化界面
        initView();
        // 绑定数据
        initData();
    }

    private void initData() {
        items = new String[]{"Item 1", "Item 2", "Item 3"};
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, items);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        //
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                // 记录当前选择的项
                String selectedItem = (String) parent.getItemAtPosition(position);
                Log.d("Spinner", "Selected item: " + selectedItem);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                // 什么都不做
            }
        });
    }

    private void initView() {
        spinner = findViewById(R.id.my_spinner);
    }
}

效果图: 

 

例子二(不含适配器):

效果图:

spinner控件,UI,android,java,android studio

完整代码:

MainActivity:

package com.example.spinnerdemo;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity  implements CompoundButton.OnCheckedChangeListener{
EditText name;
// 下拉列表
Spinner mSpinner;
// 复选框
CheckBox basketball,music,game;
// 单选框
RadioGroup mRadioGroup;
Button mButton;
// 性别
private String sex = "";
// 爱好
private String hobby = "";
// 班级
private String Class;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        name = findViewById(R.id.name);
        mSpinner = findViewById(R.id.spinner);
        mRadioGroup = findViewById(R.id.group);
        mButton = findViewById(R.id.button);
        basketball = findViewById(R.id.basketball);
        music = findViewById(R.id.music);
        game = findViewById(R.id.game);
        // 使用RadioGroup监听Radio的变化
        mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.man:
                        sex = "男";
                        break;
                    case R.id.woman:
                        sex = "女";
                        break;
                    default:
                        sex = "";
                        break;
                }
            }
        });
        // 注册复选框监听事件
        basketball.setOnCheckedChangeListener(this);
        game.setOnCheckedChangeListener(this);
        music.setOnCheckedChangeListener(this);
        // 下拉列表监听事件
        mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            // 当item被选中时调用该方法
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Class = MainActivity.this.getResources().getStringArray(R.array.position)[position];
            }
            // 当item没有被选中时调用
            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        // 按钮的监听事件
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "姓名:"+name.getText()+"    班级:"+Class+"性别:"+sex+"  爱好:"+hobby, Toast.LENGTH_SHORT).show();
            }
        });
    }

    // 复选框的监听事件
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    // 获取按钮的文本
        String msg = buttonView.getText().toString();
        // 判断是否被选中
        if(isChecked) {
            if (!hobby.contains(msg)) {
                hobby = hobby + msg;
            }
        }else{
            if (hobby.contains(msg)){
                hobby = hobby.replace(msg,"");
            }
        }
    }
}

activity_main:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名:"
            android:textSize="20sp"
            />
        <EditText
            android:id="@+id/name"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="班级:"
            android:textSize="20sp"
            />
        <Spinner
            android:id="@+id/spinner"
            android:entries="@array/position"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <TextView
            android:id="@+id/sex"
            android:text="性别:"
            android:textSize="20sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <RadioGroup
            android:id="@+id/group"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/man"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="男"
                android:textSize="20sp"/>
            <RadioButton
                android:checked="true"
                android:id="@+id/woman"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="女"
                android:textSize="20sp"/>
        </RadioGroup>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <TextView
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="爱好"
            android:textSize="20sp"
            />

        <CheckBox
            android:id="@+id/basketball"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="篮球" />
        <CheckBox
            android:id="@+id/music"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="音乐"/>
        <CheckBox
            android:id="@+id/game"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="音乐"/>
    </LinearLayout>
 <Button
     android:id="@+id/button"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="提交"/>
</LinearLayout>

在res/value 中创建array.xml文章来源地址https://www.toymoban.com/news/detail-738222.html

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="position">
        <item>计算机21-2</item>
        <item>新能源20-1</item>
        <item>电子19-1</item>

    </string-array>
</resources>

到了这里,关于Spinner(下拉列表)的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Android】自定义Spinner控件及其使用

    在 res/values/ 文件夹下新建一个 arrays.xml 文件: activity_main.xml 文件: 2.1 dropdown模式 效果: 2.2 dialog模式 效果: 在 res/drawable/ 文件夹下新建两个文件: (1) shape_for_custom_spinner.xml 文件(用来定义下拉框的样式): (2) selector_for_custom_spinner 文件(用来定义Spinner控件本身的样

    2023年04月16日
    浏览(35)
  • Android 之 Spinner (列表选项框)的基本使用

    本来本节是想给大家介绍一个Gallery(画廊)的一个控件的,后来想想还是算了,因为 在Android 4.1后就已经被弃用了,尽管我们可以通过兼容不来使用Gallery,不过想想 还是算了,因为Gallery在每次切换图片的时候,都需要重新创建视图,这样无疑会造成 很大资源浪费!我们可以通

    2024年02月10日
    浏览(55)
  • Android之Spinner使用详解

    当我们的app需要用户输入数据时,除了让用户自己打字以外,还有一种比较贴心的设计: 列出一组选项让用户从中挑选,从而方便了我们的用户! Spinner组件一共有两个,一个是本身的Spinner,一个是android.support.v7.widget.AppCompatSpinner 两者的区别在于v7内的Spinner是兼容低版本的,Spi

    2023年04月19日
    浏览(32)
  • 无涯教程-Android - Spinner函数

    Spinner允许您从下拉菜单中选择一个项目 例如。使用Gmail应用程序时,将显示如下所示的下拉菜单,您需要从下拉菜单中选择一个项目。 本示例演示计算机的类别,您需要从类别中选择一个类别。 以下是修改后的主要Activity文件src/com.example.spinner/AndroidSpinnerExampleActivity.java的内容。

    2024年02月10日
    浏览(45)
  • 合宙Air724UG LuatOS-Air LVGL API控件-加载器(Spinner)

    加载器(Spinner) 通过  lvgl.spinner_create  就可创建一个加载器,本身自带动画效果。 可以通过  lvgl.spinner_set_arc_length  函数调整加载器的弧长。单位是度,一圈是按 360 度计算的。 通过  lvgl.spinner_set_spin_time  可以设置转速,这里的单位是 ms,是加载器转完一圈的时间,GIF 录制

    2024年02月09日
    浏览(40)
  • Android Studio开发之路(八)Spinner样式设置

    白色背景+显示下拉框按钮 问题: 设置Spinner的背景可以通过设置background: android:background=\\\"@color/white\\\" ,但是一旦设置了这个值,右侧的下拉按钮就会消失 在drawable中添加一个spinner_style.xml,并添加以下内容,然后在布局文件中的Spinner中添加Style 这里@drawable/ic_dropdown是一个下拉按

    2024年04月28日
    浏览(32)
  • 安卓Spinner文字看不清

    Holo主题安卓13的Spinner文字看不清,明明已经解决了,又忘记了。

    2024年01月23日
    浏览(46)
  • 安卓控件 - 下拉列表

    1、创建安卓应用【SelectSubject】 2、将背景图片拷贝到drawable目录 3、主布局资源文件activity_main.[xml] 4、[字符串](资源文件strings.xml 5、启动应用,查看效果 通过下拉列表的entries属性绑定好了数据源,此时无须适配器也能看到下拉列表能展开列表项 6、主界面类 - MainActivity 声明

    2024年02月11日
    浏览(37)
  • ACCESS中如何在窗体内插入下拉列表框控件?

    在 ACCESS 中,可以通过以下步骤在窗体内插入下拉列表框控件: 在窗体设计视图下,打开“工具箱”窗口。 在工具箱中找到“下拉列表框”控件。 将“下拉列表框”控件拖放到窗体上。 双击插入的下拉列表框,在“数据”选项卡中设置下拉列表框的数据源。 在“事件”选项

    2024年02月06日
    浏览(37)
  • MFC List Control控件添加单元格编辑和单元格下拉列表

    ui 设置 消息映射 // CListDlg.cpp: 实现文件 // CListDlg.h: 头文件

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包