在multiaautocompletetextview中输入double space替换逗号
Enter double space to replace comma in multiautocompletetextview
我想在 multiautocompletetextview 中从键盘输入双 space 时添加逗号。我在 google 中搜索了很多东西。但是达不到我的目的。我想替换用户输入的双 space 的逗号。
很明显,我必须在 addtextwatcher 的 ontextChange() 或 OnAfterTextChanged() 中编写一些逻辑 listener.but 我没有在 add 2 space.[=11= 之后得到事件]
当来自 list.but 的 select 单词时,我已经使用了逗号分词器 我想在用户使用键盘输入双 space 时添加逗号。
提前致谢
这样试试,我没试过这段代码
boolean userPressedKey = false ;
int spaceCount = 0;
yourEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
userPressedKey = false ;
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {
userPressedKey = true;
});
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (userPressedKey) {
if (keyCode == KeyEvent.KEYCODE_SPACE) {
spaceCount ++;
if(spaceCount == 2){
//append comma to the edittext here
Toast.makeText(MainActivity.this, "White space is clicked twice", Toast.LENGTH_LONG).show();
}
return true;
}else{
spaceCount=0;
}
}
super.onKeyDown(keyCode, event);
}
我可以为您提供的最简单的解决方案是使用 String.replace()
,这是可以帮助您的小代码片段
@Override
protected void onCreate(Bundle savedInstanceState) {
...
edt.addTextChangedListener(textWatcher);
}
和 TextWatcher
,您将在 EditText
上设置
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
edt.removeTextChangedListener(textWatcher);
String text = edt.getText().toString();
text = text.replace(" ", ",");
edt.setText(text);
edt.setSelection(text.length());
edt.addTextChangedListener(textWatcher);
}
@Override
public void afterTextChanged(Editable editable) {
}
};
我想在 multiautocompletetextview 中从键盘输入双 space 时添加逗号。我在 google 中搜索了很多东西。但是达不到我的目的。我想替换用户输入的双 space 的逗号。
很明显,我必须在 addtextwatcher 的 ontextChange() 或 OnAfterTextChanged() 中编写一些逻辑 listener.but 我没有在 add 2 space.[=11= 之后得到事件]
当来自 list.but 的 select 单词时,我已经使用了逗号分词器 我想在用户使用键盘输入双 space 时添加逗号。
提前致谢
这样试试,我没试过这段代码
boolean userPressedKey = false ;
int spaceCount = 0;
yourEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
userPressedKey = false ;
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {
userPressedKey = true;
});
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (userPressedKey) {
if (keyCode == KeyEvent.KEYCODE_SPACE) {
spaceCount ++;
if(spaceCount == 2){
//append comma to the edittext here
Toast.makeText(MainActivity.this, "White space is clicked twice", Toast.LENGTH_LONG).show();
}
return true;
}else{
spaceCount=0;
}
}
super.onKeyDown(keyCode, event);
}
我可以为您提供的最简单的解决方案是使用 String.replace()
,这是可以帮助您的小代码片段
@Override
protected void onCreate(Bundle savedInstanceState) {
...
edt.addTextChangedListener(textWatcher);
}
和 TextWatcher
,您将在 EditText
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
edt.removeTextChangedListener(textWatcher);
String text = edt.getText().toString();
text = text.replace(" ", ",");
edt.setText(text);
edt.setSelection(text.length());
edt.addTextChangedListener(textWatcher);
}
@Override
public void afterTextChanged(Editable editable) {
}
};