现在的位置: 首页 > 综合 > 正文

我的Android笔记(六)——分享一个自己的NumberPicker

2012年04月11日 ⁄ 综合 ⁄ 共 1567字 ⁄ 字号 评论关闭

(PS:其实不是自己的,只是我修改自别人的开源代码的,这里说“自己的”只是为了区别Android3.0以后系统自带的NumberPicker类)

Android3.0增加了一个NumberPicker类,可用于数字的获取。但是目前我们的应用一般都至少要兼容到2.1,所以要用NumberPicker就很纠结了。

我在写的一个应用要用到金钱的输入,之前的做法是用一个EditText,限制内容为数字,当点击时会调用系统默认输入法的数字键盘,但是总感觉有时候输入法的界面看起来很突兀,跟程序的风格不搭,于是萌生了自己写一个数字输入类的想法。

经过google,发现了一个开源项目http://code.google.com/p/taketoma-android-number-picker/,经过修改,实现了自己想要的功能。


NumberPickerDialog的setText方法中可以很方便的修改限制条件,使其符合各种要求,如原版的代码就是对最大值和最小值的限定。另外原版的代码限制为整数,我修改成了String,以使其更灵活一些。


我修改后的代码demo——

运行效果图:

功能类NumberPickerDialog.java

  1. package com.android.picker;  
  2.   
  3. import android.app.Dialog;  
  4. import android.content.Context;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.TextView;  
  10.   
  11. public class NumberPickerDialog extends Dialog implements OnClickListener {  
  12.     Button btn_ok;  
  13.     Button btn_cancel;  
  14.     TextView txt_input;  
  15.     TextView txt_rangeMin;  
  16.     TextView txt_rangeMax;  
  17.     Button btn_1;  
  18.     Button btn_2;  
  19.     Button btn_3;  
  20.     Button btn_4;  
  21.     Button btn_5;  
  22.     Button btn_6;  
  23.     Button btn_7;  
  24.     Button btn_8;  
  25.     Button btn_9;  
  26.     Button btn_0;  
  27.     Button btn_clear;  
  28.     Button btn_dot;  
  29.     Context context;  
  30.     String initNumber;  
  31.     int mode;  
  32.   
  33.     public interface OnMyNumberSetListener {  
  34.         /** 
  35.          * 数字被设定之后执行此方法 
  36.          *  
  37.          * @param number 
  38.          *            当前文字框中字符串 
  39.          * @param mode 
  40.          *            可用以标识调用者 
  41.          */  
  42.         void onNumberSet(String number, int mode);  
  43.     }  
  44.   

抱歉!评论已关闭.