Java 如何在EditText中自动添加千个分隔符?
当用户使用主题中的最后一个解决方案键入时,我想在EditText中自动添加1000个分隔符 我已经制作了一个单独的java文件作为一个类,如前所述,并粘贴了给定的代码。但是我不知道如何修改我的活动代码以达到预期的效果 以下是我的XML代码:Java 如何在EditText中自动添加千个分隔符?,java,android,xml,android-layout,android-activity,Java,Android,Xml,Android Layout,Android Activity,当用户使用主题中的最后一个解决方案键入时,我想在EditText中自动添加1000个分隔符 我已经制作了一个单独的java文件作为一个类,如前所述,并粘贴了给定的代码。但是我不知道如何修改我的活动代码以达到预期的效果 以下是我的XML代码: <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inp
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:id="@+id/editText"
android:layout_weight="1"/>
}
如果有任何帮助,我们将不胜感激。首先,活动课上的编辑文本参考在哪里 第二,正如您提到的链接所说,您必须在edittext中添加文本监视程序,并重置用户的输入文本 您可以在活动中使用以下代码:
private EditText editText;
private final TextWatcher watcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable view) {
String s = null;
try {
s = String.format("%,d", Long.parseLong(view.toString()));
} catch (NumberFormatException e) {
}
editText.removeTextChangedListener(watcher);
editText.setText(s);
editText.addTextChangedListener(watcher);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_costof_hearing);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
...
editText = (EditText) findViewById(R.id.editText);
editText .addTextChangedListener(watcher);
}
我自己还没有检查它,这可能会导致更改光标在编辑文本中的位置。检查它,并更新我太plz:)
暂时删除TextWatcher的原因是,如果watcher仍然使用EditText,则在调用
EditText.setText
时,它将再次被调用,并创建一个循环,该循环将导致堆栈溢出异常。可能有用:@stkent:猜测它仅用于作为结果字符串更改格式。不是活的改变…谢谢你,先生!我按照你说的做了,第三个数字被逗号除了,但是有问题。。第一:数字以相反的格式输入。因此123导致321。第二:键入第五位数字后,edittext将重置。你是否考虑过我提到的单独java类?新浪再上不管怎样,我从你的回答中得到了一点线索,并设法自己使用了这门课。。非常感谢亲爱的朋友:)如果答案对你有帮助,你应该接受答案
private EditText editText;
private final TextWatcher watcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable view) {
String s = null;
try {
s = String.format("%,d", Long.parseLong(view.toString()));
} catch (NumberFormatException e) {
}
editText.removeTextChangedListener(watcher);
editText.setText(s);
editText.addTextChangedListener(watcher);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_costof_hearing);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
...
editText = (EditText) findViewById(R.id.editText);
editText .addTextChangedListener(watcher);
}