我需要EditText只允许七个整数和两个十进制数。例如:7777777.99
我在onTouchListener事件中尝试使用此Regex,但无效。顺便说一句,这是正确的事件吗?
txtRespNumero.addTextChangedListener(new TextWatcher() {
int count = 0; // Declare as Instance Variable
boolean isSeven = true; // Declare as Instance Variable
public void onTextChanged(CharSequence s, int start, int before,
int count) {
count++;
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
if(isSeven){
if(count == 7){
s.append(".");
isSeven = true;
}
}
if(count < 7){
isSeven = true;
}
}
});
答案 0 :(得分:1)
以这种方式试试......
- 将EditText
属性Max Length
设为10。
- 然后,当您接受EditeText
值时,请使用以下示例将其转换为0000000.00的格式:
<强>例如强>
double d = 300.0;
DecimalFormat df = new DecimalFormat("0000000.00");
System.out.println(df.format(d));
///////////////////////////////////编辑部分/////// ////////////////////// 强>
另一种方法,就像你想要的那样.........
int count = 0; // Declare as Instance Variable
boolean isSix = true; // Declare as Instance Variable
tx = (EditText) findViewById(R.id.editText_CheckIt);
tx.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
count++;
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
if(isSeven){
if(count == 7){
s.append(".");
isSeven = true;
}
}
if(count < 7){
isSeven = true;
}
}
});
答案 1 :(得分:0)
尝试使用onTextChanged,每当用户输入数字时(在您的情况下),只有触摸控件时,它才会被调用)。这个解决方案对我有用: EditText no more than x decimals android
很遗憾,android不允许你直接在XML中执行此操作。