日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自己的数字选择控件NumberPicker

發布時間:2024/4/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自己的数字选择控件NumberPicker 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android3.0增加了一個NumberPicker類,可用于數字的獲取。但是目前我們的應用一般都至少要兼容到2.1,所以要用NumberPicker就很糾結了。

我在寫的一個應用要用到金錢的輸入,之前的做法是用一個EditText,限制內容為數字,當點擊時會調用系統默認輸入法的數字鍵盤,但是總感覺有時候輸入法的界面看起來很突兀,跟程序的風格不搭,于是萌生了自己寫一個數字輸入類的想法。

經過google,發現了一個開源項目http://code.google.com/p/taketoma-android-number-picker/,經過修改,實現了自己想要的功能。


在NumberPickerDialog的setText方法中可以很方便的修改限制條件,使其符合各種要求,如原版的代碼就是對最大值和最小值的限定。另外原版的代碼限制為整數,我修改成了String,以使其更靈活一些。


我修改后的代碼demo——

?

運行效果圖:

?

功能類NumberPickerDialog.java

package com.android.picker;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class NumberPickerDialog extends Dialog implements OnClickListener {
Button btn_ok;
Button btn_cancel;
TextView txt_input;
TextView txt_rangeMin;
TextView txt_rangeMax;
Button btn_1;
Button btn_2;
Button btn_3;
Button btn_4;
Button btn_5;
Button btn_6;
Button btn_7;
Button btn_8;
Button btn_9;
Button btn_0;
Button btn_clear;
Button btn_dot;
Context context;
String initNumber;
int mode;

public interface OnMyNumberSetListener {
/**
* 數字被設定之后執行此方法
*
*
@param number
* 當前文字框中字符串
*
@param mode
* 可用以標識調用者
*/
void onNumberSet(String number, int mode);
}

private OnMyNumberSetListener mListener;

public NumberPickerDialog(Context context, OnMyNumberSetListener listener,
String number, int mode) {
super(context);
this.context = context;
this.mListener = listener;
this.initNumber = number;
this.mode = mode;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.number_picker_layout);
setTitle("Number Picker");

txt_input = (TextView) findViewById(R.id.txt_inputNumber);

txt_input.setText(String.valueOf(initNumber));

btn_1 = (Button) findViewById(R.id.btn_1);
btn_2 = (Button) findViewById(R.id.btn_2);
btn_3 = (Button) findViewById(R.id.btn_3);
btn_4 = (Button) findViewById(R.id.btn_4);
btn_5 = (Button) findViewById(R.id.btn_5);
btn_6 = (Button) findViewById(R.id.btn_6);
btn_7 = (Button) findViewById(R.id.btn_7);
btn_8 = (Button) findViewById(R.id.btn_8);
btn_9 = (Button) findViewById(R.id.btn_9);
btn_0 = (Button) findViewById(R.id.btn_0);
btn_clear = (Button) findViewById(R.id.btn_clear);
btn_dot = (Button) findViewById(R.id.btn_dot);
btn_ok = (Button) findViewById(R.id.ok);
btn_cancel = (Button) findViewById(R.id.cancel);
btn_1.setOnClickListener(this);
btn_2.setOnClickListener(this);
btn_3.setOnClickListener(this);
btn_4.setOnClickListener(this);
btn_5.setOnClickListener(this);
btn_6.setOnClickListener(this);
btn_7.setOnClickListener(this);
btn_8.setOnClickListener(this);
btn_9.setOnClickListener(this);
btn_0.setOnClickListener(this);
btn_clear.setOnClickListener(this);
btn_dot.setOnClickListener(this);
btn_ok.setOnClickListener(this);
btn_cancel.setOnClickListener(this);
setCancelable(false);
}

private void setText(String num) {
String nowNumber = txt_input.getText().toString();
String newNumber = "";

/* 限制最多位數為8 */
if (nowNumber.length() >= 8) {
return;
}

/* 限制為兩位小數 */
int dotSite = nowNumber.indexOf(".");
if (dotSite > 0 && dotSite + 2 < nowNumber.length()) {
return;
}

if (!num.equals(".")) {// 輸入不為小數點
if (nowNumber.equals("") || nowNumber.equals("0")) {
newNumber = String.valueOf(num);
} else {
newNumber = nowNumber.concat(String.valueOf(num));
}
} else {// 輸入小數點
if (nowNumber.equals("") || nowNumber.contains(".")) {
// 當前值為空或者已包含小數點時不執行操作
return;
} else {
newNumber = nowNumber.concat(".");
}
}
txt_input.setText(newNumber);
}

private void deleteText() {
txt_input.setText("");
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ok:
String number = txt_input.getText().toString();
if (number.endsWith(".")) {
number = number.substring(0, number.length() - 1);
}
mListener.onNumberSet(number, mode);
dismiss();
break;
case R.id.cancel:
dismiss();
break;
case R.id.btn_0:
setText("0");
break;
case R.id.btn_1:
setText("1");
break;
case R.id.btn_2:
setText("2");
break;
case R.id.btn_3:
setText("3");
break;
case R.id.btn_4:
setText("4");
break;
case R.id.btn_5:
setText("5");
break;
case R.id.btn_6:
setText("6");
break;
case R.id.btn_7:
setText("7");
break;
case R.id.btn_8:
setText("8");
break;
case R.id.btn_9:
setText("9");
break;
case R.id.btn_dot:
setText(".");
break;
case R.id.btn_clear:
deleteText();
break;
}
}
}

NumberPickerDemoActivity.java

package com.android.picker;

import com.android.picker.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class NumberPickerDemoActivity extends Activity {

private TextView textView1;
private Button button1;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

textView1 = (TextView) findViewById(R.id.text1);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
showNumberPicker(textView1.getText().toString(), 0);
}
});
}

private void showNumberPicker(String number, int mode) {
String nowNumber = "0";
if (!number.equals("")) {
nowNumber = number;
}
new NumberPickerDialog(this, listener, nowNumber, mode).show();
}

private NumberPickerDialog.OnMyNumberSetListener listener = new NumberPickerDialog.OnMyNumberSetListener() {
@Override
public void onNumberSet(String number, int mode) {
textView1.setText(number);
}
};
}

xml比較多,就不貼了,完整的demo項目可在這下載:http://files.cnblogs.com/shanzei/_NumberPickerDemo.zip

原文:http://blog.csdn.net/barryhappy/article/details/7363230#

轉載于:https://www.cnblogs.com/shanzei/archive/2012/04/06/2434708.html

總結

以上是生活随笔為你收集整理的自己的数字选择控件NumberPicker的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。