在我的应用程序中,我必须格式化两个EditTexts的输入,如:
我不知道该怎么做。请帮忙:
答案 0 :(得分:2)
将监听器放在编辑文本上,作为afterTextChanged。 使用length()函数获取位数。 获得数字后,您可以提取每个数字,然后插入' /'在适当的地方。
len=editText.getText.toString().length();
然后你可以通过检查长度来做适当的改变。
num=Integer.parseInt(editText.getText.toString());
temp=num;
if(len>=10)
{
A:
if((len-4)>0)
{
for(i=0;i<(len-4);i++)
{
temp=temp/10; //we get the first 4 digits
}
editText.setText(temp+" "); //place letters and add space
temp=num%(10^(len-4)); //get the num without the first-4 letters
len=len-4; //modify length
goto A; //repeat again
}
editText.setText(temp); //add the last remaining letters
}
else if(len==4)
{
temp=num;
temp=temp%100; //store the last 2 digits
num=num/10; //get the first 2 digits
editText.setText(num+"/"+temp);
}
我曾尝试过这个,但我认为这会奏效。 希望这会有所帮助。 :)
答案 1 :(得分:1)
使用“onKeyListener”获取输入事件。 EditText OnKeyDown
然后检查输入是否正确并计算数字。在代码中添加空格/斜杠。 示例代码:
if (editText.getText.toString().length() % 4 == 0) editText.setText(editText.getText.toString() + " ");
没有亲自尝试,但这将是我尝试的方式。另外我也会检查数字输入。
答案 2 :(得分:1)
我可以想到实现它的两种方法:
使用addTextChangedListener
:
yourEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
// Do your tricks here
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});