自定义Spinner其实包括两个部分:

第一部分是用来打开下拉列表的按钮,如图,这个绿色背景直接设置Spinner的背景就行,素材文件如下:

里面的文字需要注意下,Spinner控件没有直接修改文字的接口,这个文字实际上是在Adapter中设置,例如:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),

R.layout.spinner_checked_text, gradeList);

gradeSpinner.setAdapter(adapter);

这个spinner_checked_text.xml的实现如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@android:id/text1"
  4. android:layout_width="match_parent"
  5. android:layout_height="wrap_content"
  6. android:gravity="center_vertical"
  7. android:padding="10dp"
  8. android:singleLine="true"
  9. android:textColor="@color/text_green"
  10. android:textSize="20sp" >
  11.  
  12. </CheckedTextView>

必须是CheckedTextView,否则会出错。

第二部分就是那个弹出来的下拉窗口,这个是复写ArrayAdapter的getDropDownView()方法来实现的,代码如下:

  1. ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),
  2. R.layout.spinner_checked_text, gradeList) {
  3.  
  4. @Override
  5. public View getDropDownView(int position, View convertView,
  6. ViewGroup parent) {
  7. View view = inflate(getContext(), R.layout.spinner_item_layout,
  8. null);
  9. TextView label = (TextView) view
  10. .findViewById(R.id.spinner_item_label);
  11. ImageView check = (ImageView) view
  12. .findViewById(R.id.spinner_item_checked_image);
  13. label.setText(gradeList.get(position));
  14. if (gradeSpinner.getSelectedItemPosition() == position) {
  15. view.setBackgroundColor(getResources().getColor(
  16. R.color.spinner_green));
  17. check.setImageResource(R.drawable.check_selected);
  18. } else {
  19. view.setBackgroundColor(getResources().getColor(
  20. R.color.spinner_light_green));
  21. check.setImageResource(R.drawable.check_unselect);
  22. }
  23.  
  24. return view;
  25. }
  26.  
  27. };
  28.  
  29. adapter.setDropDownViewResource(R.layout.spinner_item_layout);

其中spinner_item_layout.xml的内容如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:background="@color/spinner_light_green"
  6. android:padding="15dp" >
  7.  
  8. <TextView
  9. android:id="@+id/spinner_item_label"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:layout_alignParentLeft="true"
  13. android:layout_centerVertical="true"
  14. android:textColor="@color/text_green"
  15. android:textSize="17sp" />
  16.  
  17. <ImageView
  18. android:id="@+id/spinner_item_checked_image"
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:layout_alignParentRight="true"
  22. android:layout_centerVertical="true"
  23. android:src="@drawable/check_unselect" />
  24.  
  25. </RelativeLayout>

Android 自定义Spinner和其下拉窗口的更多相关文章

  1. [置顶] xamarin android自定义spinner

    以前弄的一个下拉框时自带的spinner,感觉好丑,实际效果实在满足不了基本的UI界面要求,还是自己动手丰衣足食,看了网上关于android中自定义spinner的文章,感觉实现原理还是比较简单,所以 ...

  2. (转)Android 自定义 spinner (背景、字体颜色)

    Android 自定义 spinner (背景.字体颜色) (2012-07-04 17:04:44)   1.准备两张图片,并做好9.png   2.在drawable中定义spinner_sele ...

  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 (背景、字体颜色)

    转自:http://blog.sina.com.cn/s/blog_3e333c4a010151cj.html 1.准备两张图片,并做好9.png   2.在drawable中定义spinner_se ...

  7. Android自定义之ScrollView下拉刷新

    公司项目,需要用到ScrollView的下拉刷新,一开始使用的时候PullToRefresh三方库的下拉刷新,我比较纠结第三档库,很强大,但是,公司项目的需求,PullToRefresh就不能做到了, ...

  8. Android 的自定义Spinner组件实现方式

    一.Android的API方式默认实现的方式 1.layout下编辑main_activity.xml <RelativeLayout xmlns:android="http://sc ...

  9. Android开发手记(10) 下拉菜单Spinner

    1.自定义Spinner 首先,定义Spinner要显示的项目列表/res/values/arrays.xml <?xml version="1.0" encoding=&q ...

随机推荐

  1. 研究在SAE上搭建最新wordpress

    安装SAE上的wordpress,创建应用选择wordpress模板,安装后是3.4版本 新建一个版本2,下载最新wordpress安装包并解压到版本2中 初步猜想修改地方: 数据库配置:wp-con ...

  2. php截取字符串,无乱码

    今天面试,有一道题,要求截取中文字符无乱码. 当时因为要赶去另一家去面试,没有仔细分析. 虽然现在供职的这家公司b2c项目正在用,因为当时赶项目,是网上拿来直接用的. 回来以后再重新整理了一下. 代码 ...

  3. tabBar选中底部弹出窗口

    //UITabBarControllerDelegate方法 - (BOOL)tabBarController:(UITabBarController *)tabBarController shoul ...

  4. Java实现Http服务器(四)

    (1)HTTPServer的监听启动 sun.net.httpserver.ServerImpl类中启动了Socket监听,ServerImpl的内部类Dispatch类启动了Http服务器的监听 / ...

  5. Uva_11021 Tribles

    题目链接 题意: 现在有k只麻球, 每只麻球只能存活一天, 第二天就会死去, 死去之前可能生下x只小麻球(x = 0,1,2,...,n  1), 概率分别为P[0], P[1], ... , P[n ...

  6. Java反射的理解

    反射的作用:   1.运行时检查类的结构 2.运行时更改类的字段值 3.调用类的方法   准备知识:   Class类:虚拟机为每一个对象保存的一份对象所属类的清单: static Class for ...

  7. bzoj 1022: [SHOI2008]小约翰的游戏John anti_nim游戏

    1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1189  Solved: 734[Submit][ ...

  8. eclipse设置字体大小

    eclipse是我们常用的开发工具.eclipse中的默认字体往往并不满足我们的需要,我经常要调节一下它的大小或者换一下风格.eclipse中的字体大小怎么改变呢? 工具/原料 eclipse 方法/ ...

  9. 分布式文件系统FastDFS安装与配置(单机)

    安装包如下:fastdfs-nginx-module_v1.16.tar.gzFastDFS_v5.05.tar.gzlibfastcommon-master.zipnginx-1.8.0.tar.g ...

  10. Android 布局之DrawLayout

    在刚开始学android的时候肯定会知道,android的主要的布局就是LinearLayout.RelativeLayout.FramLayout.AbsoluteLayout.以及TableLay ...