前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android:控件Spinner实现下拉列表

Android:控件Spinner实现下拉列表

作者头像
圆号本昊
发布于 2021-09-24 04:27:21
发布于 2021-09-24 04:27:21
1.7K080
代码可运行
举报
文章被收录于专栏:github@hornhuanggithub@hornhuang
运行总次数:80
代码可运行

这里主要介绍两种Spinner: 1.添加系统默认ArrayAdapter样式 2.采用之定义SpinnerAdapter样式 先看效果图:

首先看看自定义的SpinnerAdapter: 我门在这里借用下https://blog.csdn.net/wu_lai_314/article/details/24520249的定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class SpinnerAdapter extends ArrayAdapter<String> {

    Context context;

    String[] items = new String[] {};

    public SpinnerAdapter(final Context context,
                          final int textViewResourceId, final String[] objects) {
        super(context, textViewResourceId, objects);
        this.items = objects;
        this.context = context;
    }

    @Override
    public View getDropDownView(int position, View convertView,
                                ViewGroup parent) {

        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(context);
            convertView = inflater.inflate(
                    android.R.layout.simple_spinner_item, parent, false);
        }

        TextView tv = (TextView) convertView
                .findViewById(android.R.id.text1);
        tv.setText(items[position]);
        tv.setGravity(Gravity.CENTER);
        tv.setTextColor(Color.BLUE);
        tv.setTextSize(30);
        return convertView;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(context);
            convertView = inflater.inflate(
                    android.R.layout.simple_spinner_item, parent, false);
        }

        TextView tv = (TextView) convertView
                .findViewById(android.R.id.text1);
        tv.setText(items[position]);
        tv.setGravity(Gravity.CENTER);
        tv.setTextColor(Color.BLUE);
        tv.setTextSize(30);
        return convertView;
    }
}

MainActivity很简单 就两个Spinner基本创建:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MainActivity extends Activity {
    //存放系统自带版本adapter的Spinner
    Spinner spinner_initially ;
    //存放自定义adapter的Spinner
    Spinner spinner_personal ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取界面布局文件中的Spinner组件
        spinner_initially = (Spinner) findViewById(R.id.spinner_initially);
        String[] arr_initially = new String[]{
                "猫猫","狗狗","仓鼠"
        };
        //创建 ArrayAdapter对象
        ArrayAdapter<String> adapter_initially = new ArrayAdapter<>(this,android.R.layout.simple_list_item_multiple_choice,arr_initially);
        //为spinner设置adapter
        spinner_initially.setAdapter(adapter_initially);

        //获取界面布局文件中的Spinner组件
        spinner_personal = (Spinner) findViewById(R.id.spinner_personal);
        String[] arr_personaldesign = new String[]{
                "猫猫","狗狗","仓鼠"
        };
        //创建 ArrayAdapter对象
        SpinnerAdapter adapter_personal_design = new SpinnerAdapter(this,android.R.layout.simple_list_item_multiple_choice,arr_personaldesign);
        //为spinner设置adapter
        spinner_personal.setAdapter(adapter_personal_design);
    }
}

然后就是布局,依然是无脑定义就好:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <!--定义了一个 Spinner组件-->
    <!--指定组件的数组-->
    <Spinner
        android:id="@+id/spinner_initially"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/sex"
        android:prompt="@string/sex_user_tip"
        android:scrollbarSize="30sp"/>

    <android.support.v7.widget.AppCompatSpinner
        android:id="@+id/spinner_personal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/sex_roommates_tip"
        android:scrollbarSize="30sp"/>
</LinearLayout>

最后就是下拉选项的引用了 在values里建一个自定义xml就行 这里是/values/chooseArrays

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="sex">
        <item>男孩</item>
        <item>女孩</item>
        <item>荷兰猪</item>
    </string-array>
</resources>

因为采用默认ArrayAdapter由很多限制 掌握了自定义的方法, 只要设计能力够强就可以做出各种酷炫界面

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/11/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android官方下拉选择控件Spinner
Demo: https://github.com/bige-ye/SpinnerDemo
yechaoa
2022/06/10
1.2K0
Android官方下拉选择控件Spinner
Android 控件:使用下拉列表框--Spinner
---恢复内容开始--- 一、前段代码 <Spinner android:id="@+id/spin" android:paddingTop="10px" android:layout_width="fill_parent" android:layout_height="50sp"/> <Button android:id="@+id/addList" android:layout_width="wrap_content" android:layou
hbbliyong
2018/03/06
2.8K0
android学习笔记----ListView和各种适配器简介
将数据库显示到ListView的小Demo源码地址:https://github.com/liuchenyang0515/ListView_DataBase
砖业洋__
2023/05/06
2.4K0
android学习笔记----ListView和各种适配器简介
Android在PopWindow中使用Spinner的心路历程
最近在开发的项目程序中用到了PopWindow,结果在里面需要加一个点击选择的列表,于是就准备使用Spinner放在PopWindow,期间经历了几个问题,最后都一一解决了,这篇文章就介绍一下Spinner怎么在PopWindow中使用。
Vaccae
2019/07/25
1.8K1
一步步自定义下拉组件spinner
spinner就是下拉选择组件,系统自带的spinner使用起来非常方便,首先定义一个array(strings.xml),如下:
BennuCTech
2021/12/29
1.2K0
一步步自定义下拉组件spinner
android之ArrayAdapter的重写
昨天介绍了ArrayAdapter的使用,今天介绍一下更加实用的一点,对它进行重写,满足自己的个性化设计需要.
全栈程序员站长
2022/07/20
7090
android之ArrayAdapter的重写
跟我学Android之十一 列表和适配器
视频课:https://edu.csdn.net/course/play/7621
张哥编程
2024/12/18
1630
跟我学Android之十一 列表和适配器
跟我学Android之十一 列表和适配器
本章目标 理解 MVC 模式的设计思想 。 了解 AdapterView 的继承关系图 。 掌握掌握使用各类适配器显示列表数据。 掌握列表视图 ListView 的用法。 掌握下拉视图 Spinner 的用法。
张哥编程
2024/12/17
1830
跟我学Android之十一     列表和适配器
Android之控件与布局,结构知识点,基础完结
在Android中我们常常用到很多UI控件,如TextView,EditText,ImageView,Button,ImageButton,ToggleButton,CheckBox,RadioButton等等这些可以自己多用就会了。
达达前端
2019/07/03
1.2K0
Android之控件与布局,结构知识点,基础完结
2014-11-6Android学习------Spinner下拉选择框控件学习
我学习Android都是结合源代码去学习,这样比较直观,非常清楚的看清效果,觉得很好,今天的学习源码是网上找的源码 百度搜就知道很多下载的地方 网上源码的名字叫:activity切换特效.zip我的博客写的比较乱,如果本篇文章没有看懂,
wust小吴
2022/03/07
4720
2014-11-6Android学习------Spinner下拉选择框控件学习
Android开发笔记(三十八)列表类视图
AdapterView顾名思义是适配器视图,Spinner、ListView和GridView都间接继承自AdapterView,这三个视图都存在多个元素并排展示的情况,所以需要引入适配器模式。 适配器视图的特点有: 1、定义了适配器的设置方法setAdapter,以及获取方法getAdapter。适配器用于传入视图展示需要的相关数据。 2、定义了一个数据观察者AdapterDataSetObserver,用于在列表数据发生变化时,可以通过notifyDataSetChanged方法来更新视图。 3、定义了单个元素的点击、长按、选中事件。其中点击方法为setOnItemClickListener,点击监听器为OnItemClickListener;长按方法为setOnItemLongClickListener,长按监听器为OnItemLongClickListener;选中方法为setOnItemSelectedListener,选中监听器为OnItemSelectedListener。
aqi00
2019/01/18
2.6K0
Carson带你学Android:全面解析列表ListView与AdapterView
2. 在MainActivity上定义一个链表,将所要展示的数据以存放在里面 3. 构造ArrayAdapter对象,设置适配器 4. 将LsitView绑定到ArrayAdapter上 如下图:
Carson.Ho
2022/03/24
1.2K0
Carson带你学Android:全面解析列表ListView与AdapterView
Android开发:ListView、AdapterView、RecyclerView全面解析
AdapterView本身是一个抽象类,AdapterView及其子类的继承关系如下图:
Carson.Ho
2019/02/22
3.7K0
Adapter与ListView的简单应用(下)Android应用界面开发
1.继续分析Adapter的常用类 上一篇文章使用了ArrayAdapte制作了一个只由简单的文字组成的ListView,那ArrayAdapter是不是只有简单显示一行文字的功能呢?答案是否定的。
爱因斯坦福
2018/09/10
6790
从0系统学Android--3.5 最常用和最难用的控件---ListView
ListView 是我们在开发中最常使用的控件之一。由于手机屏幕空间比较有限,能够一次性在屏幕上显示的内容不多,ListView 允许用户可以通过手指上下滑动,可以呈现更多的数据。
开发者
2019/12/26
6480
从0系统学Android--3.5 最常用和最难用的控件---ListView
使用ListView自定义布局
ListView这个控件实际上是很难用的,就是因为它很多细节可以优化,效率就是比较重要的一点.下面我们来优化下它的效率:
Dream城堡
2018/12/14
9260
使用ListView自定义布局
自定义ArrayAdapter
ListView用起来还是比较简单的,也是Android应用程序中最重要的一个组件,但其他ListView可以随你所愿,能够完成很多想要的精美列表,而这正是我们接下来要学习的内容。 一、自定义ArrayAdapter 从上期自定义列表项示例知道,每个列表项的图标都一样,如果需要每个列表项的图标根据内容动态表示,Android系统的ArrayAdapter就无能为力了,就只能使用自定义ArrayAdapter来实现啦。 做法就是创建一个ArrayAdapter的子类,重写其getVie
分享达人秀
2018/02/02
1.6K0
自定义ArrayAdapter
相关推荐
Android官方下拉选择控件Spinner
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验