首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

自定义Spinner5步走

2012-08-28 
自定义Spinner五步走?在Android的UI开发中,Spinner(下拉列表)总是可以用到的,一个简单的自定义Spinner制作

自定义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>??

?(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);

热点排行