一、概念

Spinner是下拉列表控件。

二、使用

1.属性

android:entries 使用该属性就可以不用设置Spinner的Adapter,也可以填充数据。

android:spinnerMode 可选值有:"dialog"(对话框形式)、"dropdown"(下拉框形式)。

2.点击事件

city.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

@Override

public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {

//这个方法里可以对点击事件进行处理

//i指的是点击的位置,通过i可以取到相应的数据源

}

@Override

public void onNothingSelected(AdapterView> adapterView) {

}

});

用代码来点击spinner:

//选择Spinner里的第二个数据

city.setSelection(1,true);

3.添加数据

使用xml文件作为数据源:

private void initView(){

city= (Spinner) findViewById(R.id.spCity);

SpinnerAdapter adapter=null;

adapter=ArrayAdapter.createFromResource(this,R.array.cities,android.R.layout.simple_spinner_dropdown_item);

city.setAdapter(adapter);

}

使用数组或者是List作为数据数据源:

ArrayList list=new ArrayList<>();

SpinnerAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,list);

4.自定义Spinner

改变初始布局:

//strings.xml

一年级

二年级

三年级

四年级

五年级

六年级

//spinner_layout.xml

android:layout_width = "wrap_content"

android:layout_height = "wrap_content"

xmlns:tools = "http://schemas.android.com/tools"

android:textColor = "#6d6d6d"

android:textSize = "15sp"

android:drawableRight = "@drawable/arrow"

android:drawablePadding = "5dp"

tools:text = "一年级" >

//ArrayAdapter

ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.grade, R.layout.spinner_layout);

//Activity

spinner.setBackgroundColor(0x0);

改变列表item布局:

ArrayAdapter的构造函数有mResource和mDropDownResource两个变量,其中mResource是初始布局,mDropDownResource是列表item的布局。在createFromResource方法中,mResource和mDropDownResource赋值相同。另外ArrayAdapter还有一个setDropDownViewResource方法可以改变列表item布局。

//spinner_item.xml

android:layout_width="match_parent"

android:layout_height="wrap_content"

xmlns:tools="http://schemas.android.com/tools"

android:textColor="#6d6d6d"

android:textSize="15sp"

android:padding="8dp"

android:gravity="center_horizontal"

tools:text="一年级">

//Activity

adapter.setDropDownViewResource(R.layout.spinner_item);

改变弹窗背景及位置:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {

spinner.setPopupBackgroundResource(R.drawable.bg_spinner);

spinner.setDropDownVerticalOffset(dip2px(20));

}

添加选中效果:

//SpinnerAdapter

public class SpinnerAdapter extends ArrayAdapter {

private int selectedPostion;

public void setSelectedPostion(int selectedPostion) {

this.selectedPostion = selectedPostion;

}

public SpinnerAdapter(@NonNull Context context, int resource, @NonNull T[] objects) {

super(context, resource, objects);

}

@Override

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

View view = super.getDropDownView(position, convertView, parent);

TextView textView = (TextView) view;

if (selectedPostion == position) {

textView.setTextColor(0xff373741);

textView.getPaint().setFakeBoldText(true);

} else {

textView.setTextColor(0xff6d6d6d);

textView.getPaint().setFakeBoldText(false);

}

return view;

}

public static @NonNull

SpinnerAdapter createFromResource(@NonNull Context context, @ArrayRes int textArrayResId, @LayoutRes int textViewResId) {

final CharSequence[] strings = context.getResources().getTextArray(textArrayResId);

return new SpinnerAdapter<>(context, textViewResId, strings);

}

}

//Activity

Spinner spinner = (Spinner) findViewById(R.id.spinner);

adapter = SpinnerAdapter.createFromResource(this,R.array.grade,R.layout.spinner_layout);

adapter.setDropDownViewResource(R.layout.spinner_item);

spinner.setBackgroundColor(0x0);

if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.JELLY_BEAN){

spinner.setPopupBackgroundResource(R.drawable.bg_spinner);

spinner.setDropDownVerticalOffset(dip2px(20));

}

spinner.setAdapter(adapter);

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

@Override

public void onItemSelected (AdapterView < ? > parent, View view,int position,long id){

adapter.setSelectedPostion(position);

}

@Override

public void onNothingSelected (AdapterView < ? > parent){

}

});

android spinner 简书,控件 -- Spinner相关推荐

  1. 【android开发】 修改控件Spinner内容的字体大小 颜色等属性

    在anadroid开发中遇到此问题: 直接定义的Spinner控件,不能调整内容字体的大小,所以常会 因为控件太小,内容太长而使得不能完全显示,各种搜索,找到如下解决方法!希望对遇到同样问题 的朋友们 ...

  2. Android自定义的下拉列表框控件

    一.概述 Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求, 比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的 ...

  3. 从零开始学android:Android中的基本控件(上)

    从零开始学android:Android中的基本控件(上) 本章内容较多,下面只贴代码,大家只需要贴到自己eclipse里就知道作用^^! View组件简介 Android中的View组件包含了几乎所 ...

  4. android什么控件能够输入多行文字,Android开发:文本控件详解——EditText(一)基本属性...

    一.简单实例: EditText输入的文字样式部分的属性,基本都是和TextView中的属性一样. 除此之外,EditText还有自己独有的属性. 二.基本属性: hint 输入框显示的提示文本 te ...

  5. Android游戏开发系统控件-Dialog

    Android游戏开发系统控件-Dialog Dialog(对话框)在Android应用开发中经常用到,下面是学习<Android游戏编程从零开始>一书,关于Dialog的初步学习. 创建 ...

  6. Android常用酷炫控件(开源项目)github地址汇总

    转载一个很牛逼的控件收集帖... 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.Gri ...

  7. WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件

    原文:WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件 版权声明:本文为博主原创文章,需要转载尽管转载. https://blog.csdn.net/z ...

  8. Android中的基础控件TextView、Button、ImageView、EditText、ProgressBar

    文章目录 1 Android中的基础控件 1.1 控件的通用属性 2 TextView 2.1 TextView的继承关系 2.2 TextView的常用属性 3 EditText 3.1 常用属性 ...

  9. android中的标题栏是什么意思,Android通用标题栏组合控件

    原标题:Android通用标题栏组合控件 快,点击蓝色"字体"关注这个公众号,一起涨姿势 由于项目中经常用到此种组合控件,就封装了下,具体效果看下图,老司机可以绕道哈! 一.主要功 ...

最新文章

  1. 计算机专业毕业论文的参考文献,计算机专业毕业专著类参考文献 计算机专业毕业论文参考文献哪里找...
  2. java 防止拷贝_[改善Java代码]避免对象的浅拷贝
  3. [Qt教程] 第38篇 网络(八)TCP(二)
  4. 文档中没有介绍的SQL Server DBCC命令
  5. 虚线 实现_redis跳跃表实现
  6. 小程序 ios页面 左右滑动 解决方法
  7. python中代理模式分为几种_Python设计模式之代理模式实例详解
  8. 【java基础知识】设置表格内容居中显示,表格字体大小调整,表格列宽调整
  9. qt.qpa.plugin: Could not load the Qt platform plugin xcb in /root/PycharmProjects/pythonPr
  10. oracle数据库如何计算周数,“Oracle”数据库的“周数计算”
  11. 把文字图片转换成文本文字
  12. 分享几个影视采集网站
  13. matlab射线平均速度时距曲线,时距曲线实验
  14. 【狂神说】Docker 学习笔记【基础篇】
  15. 数据结构课程设计(魔王语言(c语言)的简单代码)
  16. taobao.top.oaid.client.decrypt( 端侧OAID解密 )
  17. autojs微信红包助手代码,供大家参考
  18. 向Kubernetes集群添加/删除Node
  19. android/iphone/windows/linux/微信声波通讯库
  20. CSharp调用Matlab编译的dll

热门文章

  1. 我的世界java怎么玩起床战争_我的世界-hypixel起床战争怎么玩 起床战争出装攻略...
  2. 2020笔记本性价比之王_7000左右的笔记本推荐(2020游戏本性价比之王)
  3. pdf 加深 扫描件_把扫描版pdf变得更小更清晰的技巧
  4. 设置服务器虚拟机定时开机,windows系统开机设置VMware虚拟机自动启动虚拟机项目...
  5. rxbinding的学习笔记
  6. iOS学习笔记(1)-iPhone分辨率
  7. 日本小游戏-大家听说过「福笑い」吗?
  8. c语言 指数 2 n,c语言中指数函数中求2的N次方输出2^n中n为常数
  9. 我的C语言学习历程:GUI篇
  10. 查看dell笔记本电池运行记录