Android 实现自定义Spinner

有时候因为项目的界面风格 很多控件如果使用原生的样式感觉会与整体风格有些不搭 所以需要自定义样式 很多项目中自定义控件都是必不可少的 这里参考网上的一些资料 实现了一个自定义Spinner  记录下 加深印象

效果图:

弹框是通过一个重写的Dialog和Listview实现

第一步   重写Dialog类SelectDialog.java

[java] copy

import import import public SelectDialog  AlertDialog {

  • SelectDialog(Context context,  theme) {
  • (context, theme);
  • SelectDialog(Context context) {
  • (context);
  • onCreate(Bundle savedInstanceState) {
  • .onCreate(savedInstanceState);
  • }

第二步重写Spinner类CustomerSpinner.java

[java] copy

import
import
import
import
import
import
import
import
import

public CustomerSpinner  Spinner  OnItemClickListener {

  • SelectDialog dialog = ;
  • ArrayList<String> list;
  • String text;
  • CustomerSpinner(Context context, AttributeSet attrs) {
  • (context, attrs);
  • performClick() {
  • LayoutInflater inflater = LayoutInflater.from(getContext());
  • View view = inflater.inflate(R.layout.formcustomspinner, );
  • ListView listview = (ListView) view
  • ListviewAdapter(context, getList());
  • );
  • SelectDialog(context, R.style.dialog);
  • LayoutParams params =  LayoutParams(, LayoutParams.FILL_PARENT);
  • );
  • dialog.show();
  • ;
  • onItemClick(AdapterView<?> view, View itemView,  position,
  • id) {
  • setSelection(position);
  • (dialog != ) {
  • ;
  • ArrayList<String> getList() {
  • list;
  • }
  • setList(ArrayList<String> list) {
  • .list = list;
  • }
  • String getText() {
  • text;
  • }
  • setText(String text) {
  • .text = text;
  • }
  • }

这里用Listview来显示数据 ArrayList<String> list存储所要显示的数据 text存储每次spinner选中的值 在监听spinner并获取当前选中的值的时候用到

dialog的样式设置:styles.xml

[html] copy

<? = =?>
<>
 = =>
 =></>

  • =></>
  • =></>
  • =></>
  • =></>
  • >
    </>

Listview的代码很简单 自己写一个adapter就好了

第三步 在xml文件中引用自定义的spinner

main.xml

[html] copy

<? = =?>
< =

  • = =
  • = = =
  • = =
  • == =
  • =/>
     =
  • = = =
  • =/>
    </>

到这里差不多就完成了 不过这个还有个缺陷 每次使用时通过 spinner.setList(list);为其加载数据 当程序返回或者退出这个节目在进入时 listview中的数据会重复 这里只能通过这个办法来解决了

[html] copy

@Override

  • public boolean onKeyDown(int keyCode, KeyEvent event) {
  • == KeyEvent.KEYCODE_BACK){
  • list.clear();
  • }

每次返回或退出时 清空list 就可以啦

下载地址:http://download.csdn.net/download/wanglj0925/4634852

时间: 2024-10-09 18:18:59

Android 实现自定义Spinner的相关文章

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

一.Android的API方式默认实现的方式 1.layout下编辑main_activity.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layo

Android中自定义Spinner和其下拉窗

如图所示,自定义的Spinner包括两部分,一部分是  这个其实就是一张图片而已,素材文件如下 至于下拉窗口其实就是自定义一个Adapter

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

定义出第一个图片的布局和弹出框(一个listView)的布局,,这里就不在多说了~ListView需要自己定义一个MyspinnerAdapter~做好这些准备之后,就是弹出框的实现了~  protected void onCreate(Bundle savedInstanceState) { 03         super.onCreate(savedInstanceState); 04         setContentView(R.layout.activity_main); 05  

Android 自定义Spinner和其下拉窗口

http://www.cnblogs.com/coding-way/p/3549865.html 现效果: 自定义Spinner其实包括两个部分: 第一部分是用来打开下拉列表的按钮,如图,这个绿色背景直接设置Spinner的背景就行,素材文件如下: 里面的文字需要注意下,Spinner控件没有直接修改文字的接口,这个文字实际上是在Adapter中设置,例如: ArrayAdapter<String> adapter = new ArrayAdapter<String>(getCon

Android中自定义下拉样式Spinner

Android中自定义下拉样式Spinner 本文继续介绍android自定义控件系列,自定义Spinner控件的使用. 实现思路 1.定义下拉控件布局(ListView及子控件布局) 2.自定义SpinerPopWindow类 3.定义填充数据的Adapter 效果图 一.定义控件布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http:/

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

Android 自定义 spinner (背景.字体颜色) (2012-07-04 17:04:44)   1.准备两张图片,并做好9.png 2.在drawable中定义spinner_selector.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" &

Android 自定义Spinner字体、颜色、大小

昨天在公司项目中遇到Spinner颜色,字体,大小的困惑.所以今天也总结一下这方面知识.这个其实很简单,要改变字体,颜色以及大小,无非就是不要用系统自带的样式.自已例外写一个layout调用就行了.我就是这样做的.本文例子还有Spinner两种弹出方式,下拉框以及弹出框.加载数据源的两种方式.下面看代码介绍. 本文项目源码地址:http://download.csdn.net/detail/qq_16064871/8583085 转载请注明出处: http://blog.csdn.net/qq_

Android开发之自定义Spinner样式的效果实现(源代码实现)

android系统自带的Spinner样式是远远满足不了我们实际开发过程中对Spinner UI风格的要求,因此我们肯定需要为了切合整个应用的风格,修改我们的Spinner样式.系统给我们提供了两种常见的修改方式,一个是用XML方式静态,另一个就是Java代码动态来修改啦,我们这篇文章呢主要就是介绍如何动态修改Spinner的样式.我的实现方法呢,是自己构造一个SpinnerAdapter,继承来自ArrayAdapter,重写getDropDownView(),getView()这两个方法就好

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

转自:http://blog.sina.com.cn/s/blog_3e333c4a010151cj.html 1.准备两张图片,并做好9.png 2.在drawable中定义spinner_selector.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"