package com.example.astart;java
import java.text.DecimalFormat;android
import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.widget.EditText;app
public class MyUtils {
/**
* 格式化小數
* @param context
* @param paEditTexts
* @param limit 保留小數位數
*/
public static void setEditTextAccuracys(final Context context,final int limit,EditText...paEditTexts){
if(paEditTexts == null) return;
for (int i = 0; i < paEditTexts.length; i++) {
setEditTextAccuracy(context,paEditTexts[i],limit);
}
}
/**
* 格式化小數
* @param context
* @param editText
* @param limit 0 不限制小數位數
*/
private static void setEditTextAccuracy(final Context context,final EditText editText, final int limit) {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(limit != 0){
/**
* 限制輸入金額最多爲 limit 位小數
*/
if (s.toString().contains(".")) {
if (s.length() - 1 - s.toString().indexOf(".") > limit) {
s = s.toString().subSequence(0,
s.toString().indexOf(".") + limit + 1);
editText.setText(s);
editText.setSelection(s.length());
}
}
}
/**
* 第一位輸入小數點的話自動變換爲 0.
*/
if (s.toString().trim().substring(0).equals(".")) {
s = "0" + s;
editText.setText(s);
editText.setSelection(2);
}ide
/**
* 避免重複輸入小數點前的0 ,沒有意義
*/
if (s.toString().startsWith("0")
&& s.toString().trim().length() > 1) {
if (!s.toString().substring(1, 2).equals(".")) {
editText.setText(s.subSequence(0, 1));
editText.setSelection(1);
return;
}
}
}this
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {.net
}
@Override
public void afterTextChanged(Editable edit) {
}
});
if(limit != 0){
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if(!hasFocus){
if(!editText.getText().toString().isEmpty()){
try {
double value = Double.parseDouble(editText.getText().toString());
DecimalFormat format = new DecimalFormat("0.00");
editText.setText(format.format(value));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
});
}
}
}
orm
使用ci
import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;get
public class MainActivity extends Activity {
private EditText monkey;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
monkey=(EditText) findViewById(R.id.et_monkey);
MyUtils.setEditTextAccuracys(this, 2, monkey);string
//上下文,最多保留幾位小數,EditText控件名
}
}