Android Spinner下拉框

本文介绍了如何在Android中使用Spinner实现下拉选择框的需求。详细讲解了Spinner的使用,包括在布局文件中引入,设置偏移量,使用死数据进行填充,以及监听选择事件。同时提到可以使用ArrayAdapter添加网络数据,但该示例未涉及。文章最后提到了Spinner与服务器交互的代码,并推荐了Android开发工具类资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

              需求: 需求就是我需要做一个选择天数的下拉框,一开始我选择的是PopupWindow+RecyclerView 我也写完了代码 写完以后发现 我的最外层的Dialog 是一个固定的高 最里层的RecyclerView 只能实现四五行的条目 有点不满足需求 后来就研究PopupWindow+Spinner 再发现 PopupWindow是一个容器 Spinner也是一个容器(脑壳疼) 又到了 单独的一个Spinner 完成了这个需求 下面开始上代码 上步骤.

 

1.Spinner是原生的Android控件

 

2.在布局中引入

 

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:spinnerMode="dropdown"
    android:dropDownHorizontalOffset="50dp"
    android:dropDownVerticalOffset="-50dp"
    android:id="@+id/yanqi_spinner"
    android:entries="@array/day"
    ></Spinner>

 

(1) 关于android:dropDownHorizontalOffset 和android:dropDownVerticalOffset 属性 这俩个属性 是设置下拉框展开以后的偏移量的

android:dropDownHorizontalOffset="50dp" 是代表 水平偏移多少dp

android:dropDownVerticalOffset="-50dp"  是代表 垂直偏移多少dp(从控件开始渲染的位置Top)

(2)关于 android:entries="@array/day"  因为需求是选择天数 我是用了死数据

(3) 关于 android:spinnerMode="dropdown"此处有俩个子属性 一个底层是用PopupWindow实现的 dropdown 一个是用Dialog 实现的 dialog(默认的样式是dropdown)

 

3.上面是Spinner下拉框用死数据实现的 

        效果图:

                     

 

4.还有一种实现方式是 用适配器添加网络数据的方式 因为这个需求我并没有做 适配器的方式(望见谅)

 

 

5.按照需求我需要把选择好的天数传到服务器,好 上代码

 

 

注意*****Spinner标签的监听器只能选择下面这个setOnItemSelectedListener,其他监听器会报错,如果想取Spinner标签的下表不能直接取i,i,会打印Spinner标签的长度,已数组的方式打印出来,想取,取 l 下面的参数 long l 可以取到Spinner的下标

Spinner的id名.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        //获得选中的天数
        String selectedItem = (String) yanqiSpinner.getSelectedItem();
        //判断字符串不等于'请选择延期天数'
        if (!selectedItem.equals("请选择延期天数")) {

            tv_show_num.setText(selectedItem);	//我自己的需求 看官不需要

        } else {
            //否侧Toast '请选择天数'
            Toast.makeText(context, "请选择天数", Toast.LENGTH_SHORT).show();

        }

    }

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

    }
});

 

6.网络请求的数据,展示到Spinner中,也是比较简单的一看就会

Spinner的子布局是一个TextView,这里就不贴了

 

7.简单的ArrayAdapter适配器

 

ArrayAdapter arrayAdapter =
        new ArrayAdapter(getActivity(), 请的布局, 子布局TextView的id, 您要加载的数据(集合数据));
spinner.setAdapter(arrayAdapter);

 

到此Spinner常用的功能全部实现了,希望对您有所帮助。

 

 

 

 

 

    为您推荐的是:

                                                     Android 开发常用的工具类(更新ing)

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值