更多知识,更多乐趣

当前位置:首页软件开发Android → Android 自定义 spinner (背景、字体颜色)

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

时间:2018-03-30 21:15:36来源:互联网我要评论(0)

1、准备两张图片,并做好9.png

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

 

2、在drawable中定义spinner_selector.xml

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:state_pressed="true"   

        android:drawable="@drawable/spinner_press" /><!--按下时效果-->  

    <item android:state_pressed="false"   

        android:drawable="@drawable/spinner" /><!--默认效果-->   

</selector>

 

3、style中定义

    <!-- spinner -->

    <style name="spinner_style">

    <item name="android:background">@drawable/spinner_selector</item>

    <item name="android:paddingLeft">5dip</item>

    </style>

 

 

4、调用

<Spinner

    android:id="@+id/field_item_spinner_content"

    style="@style/spinner_style"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:animationCache="true"

    android:drawSelectorOnTop="true" />

 

 

5、在layout中定义simple_spinner_item.xml

<?xml version="1.0" encoding="utf-8"?>

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 

    android:id="@android:id/text1"

    android:paddingLeft="5dip"

    android:paddingRight="5dip"

    android:gravity="center_vertical"

    android:textColor="#808080"

    android:singleLine="true"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    />

 

 

6、java代码

ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext, R.layout.simple_spinner_item);

String level[] = getResources().getStringArray(R.array.affair_level);//资源文件

for (int i = 0; i < level.length; i++) {

adapter.add(level[i]);

}

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner.setAdapter(adapter);

 

效果图

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

 

  

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

自定义Spinner五步走

 

在Android的UI开发中,Spinner(下拉列表)总是可以用到的,一个简单的自定义Spinner制作我们只需要记住这重要的五步,一个Spinner就可以应用而生了。

(1)新建一个Android工程,名字为SpinnerTest1。修改layout下的main.xml,添加一个Textview和一个Spinner,文件内容如下:

Xml代码

  1. <? xml   version = "1.0"   encoding = "utf-8" ?>   

  2. < LinearLayout   

  3.     android:id = "@+id/widget28"   

  4.     android:layout_width = "fill_parent"   

  5.     android:layout_height = "fill_parent"   

  6.     android:orientation = "vertical"   

  7.     xmlns:android = "http://schemas.android.com/apk/res/android"   >   

  8.     < TextView   

  9.         android:id = "@+id/TextView_Show"   

  10.         android:layout_width = "fill_parent"   

  11.         android:layout_height = "wrap_content"   

  12.         android:text = "你选择的是"   

  13.         android:textSize = "25sp" >   

  14.     </ TextView >   

  15.     < Spinner   

  16.         android:id = "@+id/spinner_City"   

  17.         android:layout_width = "fill_parent"   

  18.         android:layout_height = "wrap_content" >   

  19.     </ Spinner > <!-- 定义一个下拉菜单-->   

  20. </ LinearLayout >   


  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout  

  3.     android:id="@+id/widget28"  

  4.     android:layout_width="fill_parent"  

  5.     android:layout_height="fill_parent"  

  6.     android:orientation="vertical"  

  7.     xmlns:android="http://schemas.android.com/apk/res/android" >  

  8.     <TextView  

  9.         android:id="@+id/TextView_Show"  

  10.         android:layout_width="fill_parent"  

  11.         android:layout_height="wrap_content"  

  12.         android:text="你选择的是"  

  13.         android:textSize="25sp">  

  14.     </TextView>  

  15.     <Spinner  

  16.         android:id="@+id/spinner_City"  

  17.         android:layout_width="fill_parent"  

  18.         android:layout_height="wrap_content">  

  19.     </Spinner><!-- 定义一个下拉菜单-->  

  20. </LinearLayout>  

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	android:id="@+id/widget28"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:orientation="vertical"
	xmlns:android="http://schemas.android.com/apk/res/android" >
	<TextView
		android:id="@+id/TextView_Show"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="你选择的是"
		android:textSize="25sp">
	</TextView>
	<Spinner
		android:id="@+id/spinner_City"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content">
	</Spinner><!-- 定义一个下拉菜单-->
</LinearLayout>

 (2)修改你的SpinnerTest1类,在这里我们就要记住五步 来自定义一个Spinner了,完整代码及五步注释如下:

Java代码

  1. package  com.xtlh.spinner;  

  2.   

  3. import  java.util.ArrayList;  

  4. import  java.util.List;  

  5.   

  6. import  android.app.Activity;  

  7. import  android.os.Bundle;  

  8. import  android.view.MotionEvent;  

  9. import  android.view.View;  

  10. import  android.view.View.OnTouchListener;  

  11. import  android.view.animation.Animation;  

  12. import  android.view.animation.AnimationUtils;  

  13. import  android.widget.AdapterView;  

  14. import  android.widget.ArrayAdapter;  

  15. import  android.widget.Spinner;  

  16. import  android.widget.TextView;  

  17.   

  18. public   class  SpinnerTest1  extends  Activity {  

  19.     /** Called when the activity is first created. */   

  20.     private  List<String> list =  new  ArrayList<String>();  

  21.     private  TextView myTextView;  

  22.     private  Spinner mySpinner;  

  23.     private  ArrayAdapter<String> adapter;  

  24.     private  Animation myAnimation;  

  25.     @Override   

  26.     public   void  onCreate(Bundle savedInstanceState) {  

  27.         super .onCreate(savedInstanceState);  

  28.         setContentView(R.layout.main);  

  29.         //第一步:添加一个下拉列表项的list,这里添加的项就是下拉列表的菜单项   

  30.         list.add("北京" );  

  31.         list.add("上海" );  

  32.         list.add("深圳" );  

  33.         list.add("南京" );  

  34.         list.add("重庆" );  

  35.         myTextView = (TextView)findViewById(R.id.TextView_Show);  

  36.         mySpinner = (Spinner)findViewById(R.id.spinner_City);  

  37.         //第二步:为下拉列表定义一个适配器,这里就用到里前面定义的list。   

  38.         adapter = new  ArrayAdapter<String>( this ,android.R.layout.simple_spinner_item, list);  

  39.         //第三步:为适配器设置下拉列表下拉时的菜单样式。   

  40.         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  

  41.         //第四步:将适配器添加到下拉列表上   

  42.         mySpinner.setAdapter(adapter);  

  43.         //第五步:为下拉列表设置各种事件的响应,这个事响应菜单被选中   

  44.         mySpinner.setOnItemSelectedListener(new  Spinner.OnItemSelectedListener(){  

  45.             public   void  onItemSelected(AdapterView<?> arg0, View arg1,  int  arg2,  long  arg3) {  

  46.                 // TODO Auto-generated method stub   

  47.                 /* 将所选mySpinner 的值带入myTextView 中*/   

  48.                 myTextView.setText("您选择的是:" + adapter.getItem(arg2));  

  49.                 /* 将mySpinner 显示*/   

  50.                 arg0.setVisibility(View.VISIBLE);  

  51.             }  

  52.             public   void  onNothingSelected(AdapterView<?> arg0) {  

  53.                 // TODO Auto-generated method stub   

  54.                 myTextView.setText("NONE" );  

  55.                 arg0.setVisibility(View.VISIBLE);  

  56.             }  

  57.         });  

  58.         /*下拉菜单弹出的内容选项触屏事件处理*/   

  59.         mySpinner.setOnTouchListener(new  Spinner.OnTouchListener(){  

  60.             public   boolean  onTouch(View v, MotionEvent event) {  

  61.                 // TODO Auto-generated method stub   

  62.                 /* 将mySpinner 隐藏,不隐藏也可以,看自己爱好*/   

  63.                 v.setVisibility(View.INVISIBLE);  

  64.                 return   false ;  

  65.             }  

  66.         });  

  67.         /*下拉菜单弹出的内容选项焦点改变事件处理*/   

  68.         mySpinner.setOnFocusChangeListener(new  Spinner.OnFocusChangeListener(){  

  69.         public   void  onFocusChange(View v,  boolean  hasFocus) {  

  70.         // TODO Auto-generated method stub   

  71.             v.setVisibility(View.VISIBLE);  

  72.         }  

  73.         });  

  74.     }  

  75. }  

记住这五步后,一个Spinner就Ok了,其中在为Spinner的适配器设置下拉时的菜单样式时,我们可以自定义自己的样式,如果嫌麻烦,就直接用android.R.layout的,就如下面这样。
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
效果图如下:


相关文章

网友评论

热门评论

最新评论

发表评论 查看所有评论()

昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
字数: 0/500 (您的评论需要经过审核才能显示)

关于万荚 | 联系方式 | 发展历程 | 版权声明 | 帮助(?) | 网站地图 | 友情链接

Copyright 2005-2018 16WJ.COM 〖万荚网〗 版权所有 桂ICP备18000060号 |

声明: 本站所有文章来自互联网 如有异议 请与本站联系