ツールクラス:EditText入力小数位数を制限し、金額フォーマットで入力する
2309 ワード
アプリにはEditTextを設定する必要があります.金額フォーマットでしか入力できません.ちょうどツール類を整理して、後でコピーして貼り付けることができます.うん......怠け者は人を進歩させる!
まずはEditTextの長さを制限することができますが、金額なら小さな目標でも十分です.ええと、小数点を含めて12桁です.では、EditTextの属性に
まずはEditTextの長さを制限することができますが、金額なら小さな目標でも十分です.ええと、小数点を含めて12桁です.では、EditTextの属性に
android:maxLength="12"
を加えます.そして下のツール類をそのままセットして、対応するEditTextや制限された桁数をそのまま入れればいいのです. /**
* EditText
*
* @param editText EditText
* @param digits
*/
public static void setPriceMode(final EditText editText, final int digits) {
// , 。
editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
// EditText
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// ".", “.” 2
if (s.toString().contains(".")) {
if (s.length() - 1 - s.toString().indexOf(".") > digits) {
s = s.toString().subSequence(0,
s.toString().indexOf(".") + digits + 1);
editText.setText(s);
editText.setSelection(s.length()); //
}
}
// ,
if (s.toString().trim().substring(0).equals(".")) {
s = "0" + s;
editText.setText(s);
editText.setSelection(2);
}
// "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;
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}