有没有一种方法可以在Android中以交互方式监控和编辑文本字段,从而正确格式化输入的内容

有没有一种方法可以在Android中以交互方式监控和编辑文本字段,从而正确格式化输入的内容,android,android-edittext,listener,currency,interactive,Android,Android Edittext,Listener,Currency,Interactive,正如标题所要求的,我希望正确地监视编辑文本字段,以将输入的数字格式化为货币,并在单元格的最后2位后面放置或插入“.” 在所有情况下,当用户输入数字并展开字段时,编辑文本将反映他们输入的数字将反映为货币,示例如下: 用户输入“123456” 编辑文本将反映为:“1234.56” 甚至:“1234.56美元” 我尝试了许多不同的技术,并相信代码部分可能需要在TextWatcher中得到满足,如果用户单击字段,我当前必须清除字段,并且在检查2个字段后收到正确的布尔值后启用按钮 下面我将展示的代码片段目

正如标题所要求的,我希望正确地监视编辑文本字段,以将输入的数字格式化为货币,并在单元格的最后2位后面放置或插入“.”

在所有情况下,当用户输入数字并展开字段时,编辑文本将反映他们输入的数字将反映为货币,示例如下:

用户输入“123456”

编辑文本将反映为:“1234.56” 甚至:“1234.56美元”

我尝试了许多不同的技术,并相信代码部分可能需要在TextWatcher中得到满足,如果用户单击字段,我当前必须清除字段,并且在检查2个字段后收到正确的布尔值后启用按钮

下面我将展示的代码片段目前正在工作,我只需要适当的代码和位置来实现上述需求

此部分反映了我的TextWatcher部分:

        TextWatcher textWatcher = new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
    calcbtn.setEnabled(isready());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
        int after) {
    // TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int count,int after) {

}
    };
    numofpep.addTextChangedListener(textWatcher); //Links to the TextWatcher element for afterTextChanged function
    billtotal.addTextChangedListener(textWatcher);//Links to the TextWatcher element for afterTextChanged function
    }
欢迎提出任何建议或意见


像这样的东西应该可以:

    @Override
        public void afterTextChanged(Editable s) {
            String val = billTotal.getText().toString();
            String newStringContent = convertToDollarsAndCents(val);
            // change string to reflect your desired format
            billTotal.setText(newStringContent)
        }

        public String convertToDollarsAndCents(String val) {
          if(!val.contains(".") {
            if(val.length<=2) {
              return val+".00"
            }
            else {
               return val.subString(0, val.length-2)+"."+val.subString(val.length-2, val.length)
            }
          }
        }
@覆盖
公共无效后文本已更改(可编辑){
字符串val=billTotal.getText().toString();
字符串newStringContent=convertToDollarsAndCents(val);
//更改字符串以反映所需的格式
billTotal.setText(新闻字符串内容)
}
公共字符串转换为美元和美分(字符串值){
如果(!val.contains(“.”){

如果(val.length)看起来不错,但我使用手机作为键盘,因此没有“.”让用户输入“.”这就是我想要交互性的原因。另一个键盘有许多不同的字符,我不想让用户使用这些字符,只是数字,因为从左边开始输入数字很简单,总的来说不必担心“.”。我很确定数字键盘有一个“.”在itok上,我会检查它,我相信模拟器显示了“.”但当我在手机上测试它时,它没有显示“.”我会验证并让大家知道。谢谢
<EditText android:inputType="number" ... />