博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AppCompat学习(1)-AppCompatSpinner
阅读量:6316 次
发布时间:2019-06-22

本文共 3674 字,大约阅读时间需要 12 分钟。

andriod中的spinner控件一共有两个,一个是本身的Spinner,一个是android.support.v7.widget.AppCompatSpinner。

两者的区别在于v7内的Spinner是兼容低版本的,Spinner再高版本中才能使用的方法换了v7下的Spinner后可以一直兼容到2.1 (v7兼容到api7),初次之外两者的使用没有其他差别,推荐使用v7,保证效果在不同版本上都能显示。

spinner的使用步骤如下:

 

 

1.设置数据源


 在values文件夹下新建如下文件:

 values/arrays.xml

星期一
星期二
星期三
星期四
星期五
星期六
星期天

layout/login.xml

 
android:entries // 传入的是values文件夹下的arrayx.xml内的数据
android:spinnerMode 
//显示模式有popmenu和dialog两种
android:prompt
//当显示模式为dialog时生效,作用为显示dialog的标题内容

还有一些其它常用的属性:

2.设置显示主题


@style/common_spinner设置的是下拉item的主题。

styles.xml

 

3.添加响应事件


Spinner的响应事件是OnItemSelectedListener ,千万不要写出onItemClickListener,否则直接报错:

mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView
parent, View view, int position, long id) { //选择列表项的操作 } @Override public void onNothingSelected(AdapterView
parent) { //未选中时候的操作 } });

 

也可以使用代码添加数据源给spinner,此时布局文件中只需要包含基本的宽高属性即可。

适配器的选择:

最方便的的适配器是ArrayAdapter,缺点是只能显示单个TextView内容(采用List存储数据)

ArrayAdapter arrayAdapter = new ArrayAdapter(mContext, R.layout.item_select, mList); //传入的参数分别为 Context , 未选中项的textview , 数据源List//单独设置下拉的textviewarrayAdapter.setDropDownViewResource(R.layout.item_drop);

R.layou.item_select

R.layout.item_drop

效果如下图所示:

 

有时实际的需求中有可能需要Spinner的下拉不单单显示一个TextView,那么这个时候就需要对适配器进行自定义

自定义Adapter:

private class MyAdapter implements SpinnerAdapter {        private ThemedSpinnerAdapter.Helper helper;          @Override        public void registerDataSetObserver(DataSetObserver observer) {         }         @Override        public void unregisterDataSetObserver(DataSetObserver observer) {         }         @Override        public int getCount() {            return mList.size();        }         @Override        public Object getItem(int position) {            return mList.get(position);        }         @Override        public long getItemId(int position) {            return position;        }         @Override        public boolean hasStableIds() {            return false;        }         @Override        public View getView(int position, View convertView, ViewGroup parent) {            TextView textView = new TextView(mContext);            textView.setTextSize(30);            textView.setBackgroundColor(getResources().getColor(R.color.colorAccent));            textView.setText(mList.get(position));            return textView;        }         @Override        public int getItemViewType(int position) {            return 1;        }         @Override        public int getViewTypeCount() {            return 1;        }         @Override        public boolean isEmpty() {            return false;        }         @Override        public View getDropDownView(int position, View convertView, ViewGroup parent) {            TextView textView = new TextView(mContext);            textView.setTextSize(30);            textView.setBackgroundColor(getResources().getColor(R.color.colorPrimary));            textView.setText(mList.get(position));            return textView;        }    }

效果如下(对下拉和默认显示设置了颜色作为区分,且为方便起见没用引用布局文件,设置了下拉偏移):

至此适配器的使用的完成了,可以实现默认显示的和下拉的使用相同布局,也可是不同的布局,基本上满足需求了

另外还有几个在23中新出的方法,可以做更多的自定义(使用AppcomptSpinner可适配到低版本):

mSpinner.setPopupBackgroundResource(R.drawable.back);mSpinner.setBackgroundResource(R.drawable.back);
//给默认显示项和下拉菜单设置背景

 

 

转载地址:http://grkaa.baihongyu.com/

你可能感兴趣的文章
mysql dba系统学习(20)mysql存储引擎MyISAM
查看>>
centos 5.5 64 php imagick 模块错误处理记录
查看>>
apache中文url日志分析--php十六进制字符串转换
查看>>
浅谈代理
查看>>
基于jquery实现的超酷动画源码
查看>>
fl包下的TransitionManager的使用
查看>>
Factorialize a Number
查看>>
[USB-Blaster] Error (209040): Can't access JTAG chain
查看>>
防HTTP慢速攻击的nginx安全配置
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
Spring.Net+WCF实现分布式事务
查看>>
swoole异步任务task处理慢请求简单实例
查看>>
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
细说多线程(五) —— CLR线程池的I/O线程
查看>>