@

Android Spinner

Spinner 提供下拉列表式的输入方式,该方法可以有效节省手机屏幕上的显示空间。

本次我将使用最简单的Spinner来完成一个下拉框。完成的功能如下面的动图

代码部分

Spinner代码介绍

  1. list_Q.add("区县");//下拉框列表,用于存储下拉的内容
  2. adapter_Q = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_Q);
  3. //创建adpter适配器(必须)。
  4. //R.layout.support_simple_spinner_dropdown_item,spinner框样式,这里我使用的都是默认的。
  5. spinner_Q.setAdapter(adapter_Q);//spinner绑定adpter,到这里你的下拉框已经可以显示了。
  6. //spinner_Q.setEnabled(false);//设置spinner不可操作
  7. //设置spinner的选择监听事件
  8. spinner_Q.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  9. @Override
  10. public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
  11. }
  12. @Override
  13. public void onNothingSelected(AdapterView<?> adapterView) {
  14. }
  15. });

adapter_Q = new ArrayAdapter(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_Q);

这里是自定义选择填充后的字体样式

adapter_Q .setDropDownViewResource(R.layout.item_drop); 自定义下拉的字体样式

这样式你都可以自己写一个XMAL文件,我的使用的都是默认的就不在这里解释了android:dropDownSelector:列表框被选中时的背景

下面引用一个博主的内容

android:dropDownWidth:设置下拉列表框的宽度

android:gravity:设置里面组件的对其方式

android:popupBackground:设置列表框的背景

android:prompt:设置对话框模式的列表框的提示信息(标题),只能够引用string.xml中的资源id,而不能直接写字符串

android:spinnerMode:列表框的模式,有两个可选值:dialog:对话框风格的窗口

dropdown:下拉菜单风格的窗口(默认) android:overlapAnchor =

false:设置下拉框不覆盖显示框。(重要!!!) 可选属性:android:entries:使用数组资源设置下拉列表框的列表项目


———————————————— 版权声明:本文为CSDN博主「北极熊的微笑」的原创文章,遵循 CC 4.0 BY-SA

版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/lpCrazyBoy/article/details/80748334

核心代码

  1. private List<String> list_P= new ArrayList<>();//省下拉框列表
  2. private List<String> list_C= new ArrayList<>();//市下拉框列表
  3. private List<String> list_Q= new ArrayList<>();//区县下拉框列表
  4. private List<String> list_TP= new ArrayList<>();//类型下拉框列表
  5. private ArrayAdapter<String> adapter_P;//省列表的适配器
  6. private ArrayAdapter<String> adapter_C;//市列表的适配器
  7. private ArrayAdapter<String> adapter_Q;//区县列表的适配器
  8. private ArrayAdapter<String> adapter_TP;//类型列表的适配器
  9. private Button btn_eq_ok ;//查询按钮
  10. private Spinner spinner_P;//省下拉框
  11. private Spinner spinner_C;//市下拉框
  12. private Spinner spinner_Q;//区县下拉框
  13. private Spinner spinner_TP;//类型下拉框
  14. public static equipmentFragment newInstance() {
  15. return new equipmentFragment();
  16. }
  17. @Override
  18. public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
  19. @Nullable Bundle savedInstanceState) {
  20. return inflater.inflate(R.layout.equipment_fragment, container, false);
  21. }
  22. @Override
  23. public void onActivityCreated(@Nullable Bundle savedInstanceState) {
  24. super.onActivityCreated(savedInstanceState);
  25. mViewModel = ViewModelProviders.of(this).get(EquipmentViewModel.class);
  26. // TODO: Use the ViewModel
  27. init_Palette();//初始化控件
  28. init_hashmap();//初始化hashmap。
  29. //初始化省下拉框
  30. list_P.add("省");
  31. adapter_P = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_P);
  32. spinner_P.setAdapter(adapter_P);
  33. spinner_P.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  34. @Override
  35. public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
  36. if (adapter_P.getItem(i).equals("省")){
  37. list_C.clear();
  38. list_C.add("市");
  39. adapter_C = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_C);
  40. spinner_C.setAdapter(adapter_C);
  41. }else{
  42. list_C.clear();
  43. list_C.add("市");
  44. mapTool_getList(c_Hashmap,list_C,mapTool_getKey(p_Hashmap,adapter_P.getItem(i)),2);
  45. adapter_C = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_C);
  46. spinner_C.setAdapter(adapter_C);
  47. }
  48. }
  49. @Override
  50. public void onNothingSelected(AdapterView<?> adapterView) {
  51. spinner_C.setEnabled(false);
  52. }
  53. });
  54. /***
  55. * 初始化市下拉框
  56. */
  57. list_C.add("市");
  58. adapter_C = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_C);
  59. spinner_C.setAdapter(adapter_C);
  60. //spinner_C.setEnabled(false);
  61. spinner_C.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  62. @Override
  63. public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {//这个参数‘i’是选择项的索引
  64. //每当选择一个新的就会触发这个事件,默认会选择第一个,利用这个从这里设置
  65. if (adapter_C.getItem(i).equals("市")){//如果市下拉框选择了市,市是默认显示的
  66. /*这两句是重置区的下拉列表*/
  67. list_Q.clear();//清除区的列表
  68. list_Q.add("区县");//添加一个区县,
  69. adapter_Q = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_Q);//创建
  70. spinner_Q.setAdapter(adapter_Q);//绑定
  71. }else{
  72. /*这三句是重置区的下拉列表*/
  73. list_Q.clear();
  74. list_Q.add("区县");
  75. //添加符合要求的项目。自定义的一个方法,从区里找符合市里的地名,然后添加到list
  76. mapTool_getList(q_Hashmap,list_Q,mapTool_getKey(c_Hashmap,adapter_C.getItem(i)),4);
  77. adapter_Q = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_Q);
  78. spinner_Q.setAdapter(adapter_Q);
  79. }
  80. //程前启后,就完成了下拉列表的联动,最后只用判别区县框里面选择的内容是否是“区县”,就可辨别,具体情况具体考虑
  81. }
  82. @Override
  83. public void onNothingSelected(AdapterView<?> adapterView) {
  84. }
  85. });
  86. /***
  87. * 初始化区县下拉框
  88. */
  89. list_Q.add("区县");
  90. adapter_Q = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_Q);
  91. spinner_Q.setAdapter(adapter_Q);
  92. //spinner_Q.setEnabled(false);
  93. spinner_Q.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  94. @Override
  95. public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
  96. }
  97. @Override
  98. public void onNothingSelected(AdapterView<?> adapterView) {
  99. }
  100. });
  101. /***
  102. * 初始化监测类型下拉框
  103. */
  104. list_TP.add("类型");
  105. list_TP.add("雨量计");
  106. list_TP.add("泥位计");
  107. list_TP.add("地声传感器");
  108. list_TP.add("撞线传感器");
  109. adapter_TP = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_TP);
  110. spinner_TP.setAdapter(adapter_TP);
  111. //spinner_TP.setEnabled(false);
  112. spinner_TP.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  113. @Override
  114. public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
  115. }
  116. @Override
  117. public void onNothingSelected(AdapterView<?> adapterView) {
  118. }
  119. });
  120. //按钮点击事件
  121. btn_eq_ok.setOnClickListener(new View.OnClickListener() {
  122. @Override
  123. public void onClick(View view) {
  124. Log.d("test","run:btn_eq_ok查询点击:"+spinner_Q.getSelectedItem());
  125. //判别区县框里面选择的内容是否是“区县”,就可辨别
  126. if (spinner_Q.getSelectedItem().equals("区县")){
  127. Toast.makeText(getActivity(),"请完善省/市/区县",Toast.LENGTH_SHORT).show();
  128. }else {
  129. //弹框提示
  130. Toast.makeText(getActivity(),mapTool_getKey(q_Hashmap,spinner_Q.getSelectedItem().toString()),Toast.LENGTH_SHORT).show();
  131. }
  132. }
  133. });
  134. }

说在最后

这里我也没用自定义样式,这个可以通过重写adapter来实现,具体参考下面链接。简书:Android 好用的下拉控件Spinner

CSDN:修改Android中Spinner的显示及下拉样式的四种方法

这里我就是使用了list来控制列表的更新和联动,有的不懂得可以留言。本人也比较挫,写不来隐藏的提示项,就干脆将就用吧,功能完成就行。

代码还不懂的可以看下下面教程链接:C语言中文网:Android Spinner:下拉列表控件



最后骚一句,祝大家情人节快乐

——2020.2.14

(你现在的表情一定很好笑,哈哈哈)

要是帮到你了,记得点个赞哦亲!

Android Spinner 下拉框简单应用 详细注解的更多相关文章

  1. 一分钟掌握Android spinner下拉框

    Android 自带的spinner下拉框控件是一个不错的系统控件.主要有两种实现方式: 1.静态的spinner 在res\values中加入一个city资源数组文件 2 <resources ...

  2. android实现下拉框(spinner),自己定义大小颜色背景位置,去掉默认样式黑边

    1. 实现最简单的spinner xml文件,有一个TextView,一个Spinner: <RelativeLayout xmlns:android="http://schemas. ...

  3. Android自定义spinner下拉框实现的实现

    一:前言 本人参考博客:http://blog.csdn.net/jdsjlzx/article/details/41316417 最近在弄一个下拉框,发现Android自带的很难实现我的功能,于是去 ...

  4. Android 自定义spinner下拉框实现

    一:前言本人参考博客:http://blog.csdn.net/jdsjlzx/article/details/41316417 最近在弄一个下拉框,发现Android自带的很难实现我的功能,于是去网 ...

  5. Android 自定义spinner下拉框实现的实现

    请支持原创:http://blog.csdn.NET/geniuseoe2012/article/details/8723702 说到Android下拉框spineer,框架中虽有现成的控件,但实际效 ...

  6. android 开发-spinner下拉框控件的实现

    Android提供实现下拉框功能的非常实用的控件Spinner. spinner控件需要向xml资源文件中添加spinner标签,如下: <Spinner android:id="@+ ...

  7. Android中自定义xml文件给Spinner下拉框赋值并获取下拉选中的值

    场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...

  8. Android UI自定义Spinner下拉框(用popuwindow实现)-转

    定义出第一个图片的布局和弹出框(一个listView)的布局,,这里就不在多说了~ListView需要自己定义一个MyspinnerAdapter~做好这些准备之后,就是弹出框的实现了~  prote ...

  9. spinner 下拉框控件

    spinnerMode=dropdown时,为下拉模式spinnerMode=dialog时,会在界面中间弹出Android:popupBackground=”#f0000000”,可以去除spinn ...

随机推荐

  1. CF449B Jzzhu and Cities 迪杰斯特拉最短路算法

    CF449B Jzzhu and Cities 其实这一道题并不是很难,只是一个最短路而已,请继续看我的题解吧~(^▽^) AC代码: #include<bits/stdc++.h> #d ...

  2. 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第四节:同步与异步请求方式

    前两节,我们对WebRequest和WebResponse这两个类做了介绍,但两者还相对独立.本节,我们来说说如何将两者结合起来,方式有哪些,有什么不同. 1.4.1 说结合,无非就是我们如何发送一个 ...

  3. java 常用锁

    公平锁和非公平锁 1.公平锁,是指多个线程按照申请的顺序来获取锁,类似排队打饭,先来后到. 2.非公平锁,是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程 比先申请的线程优先获取锁, ...

  4. 记录 解决ubuntu16.04 ‘E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) ’

    当运行sudo apt-get install/update/其他命令时,会出现如下提示: E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不 ...

  5. P2869 [USACO07DEC]美食的食草动物Gourmet Grazers

    P2869 [USACO07DEC]美食的食草动物Gourmet Grazers 题目:约翰的奶牛对食物越来越挑剔了.现在,商店有M 份牧草可供出售,奶牛食量很大,每份牧草仅能供一头奶牛食用.第i 份 ...

  6. CTRL_IKun团队项目总结

    1. 团队项目-总结 这个作业属于哪个课程 课程链接 这个作业要求在哪里 作业要求 团队名称 CTRP-lkun 这个作业的目标 团队项目总结,每个人的收获和感悟 Github地址 Github 2. ...

  7. php--->把json传来的stdClass Object类型转array

    php把json传来的stdClass Object类型转array 1.Php中stdClass.object.array的概念 stdClass是PHP的一个基类,即一个空白的类,所有的类几乎都继 ...

  8. Boyer-Moore 算法 Leetcode169

    Boyer-Moore 算法 Leetcode169 一.题目 169. 多数元素 给定一个大小为 n 的数组,找到其中的多数元素.多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假 ...

  9. BaseAdapter的三种表达式分析,startActivityForResult的使用

    (一)BaseAdapter的三种表达式: ①逗比式: public View getView(int position, View convertView, ViewGroup parent) { ...

  10. 娱乐往事,年初捡到1G PAR,平淡的日子泛起波澜

    常听说这样的故事 垃圾佬捡到蓝牙键盘,于是配了一台上万的电脑 垃圾佬捡到机箱,于是配了一台带遥控的HTPC 垃圾佬捡到假NAS,于是组了20+T的RAID 而我,不是垃圾佬,更没有捡到过U盘,对突如其 ...