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


    转自:http://blog.sina.com.cn/s/blog_3e333c4a010151cj.html

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

     

    在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 >   
    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>  
    <?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);
    效果图如下:

    http://sinye.iteye.com/blog/627023

  • 相关阅读:
    UVa OJ 148 Anagram checker (回文构词检测)
    UVa OJ 134 LoglanA Logical Language (Loglan逻辑语言)
    平面内两条线段的位置关系(相交)判定与交点求解
    UVa OJ 130 Roman Roulette (罗马轮盘赌)
    UVa OJ 135 No Rectangles (没有矩形)
    混合函数继承方式构造函数
    html5基础(第一天)
    js中substr,substring,indexOf,lastIndexOf,split等的用法
    css的textindent属性实现段落第一行缩进
    普通的css普通的描边字
  • 原文地址:https://www.cnblogs.com/qingblog/p/2668444.html
Copyright © 2020-2023  润新知