gpt4 book ai didi

Android edittext append 和 remove append

转载 作者:行者123 更新时间:2023-11-29 20:22:05 37 4
gpt4 key购买 nike

我正在尝试制作 editText,我要在其中插入一些文本。在每三个字符之后,我想插入破折号。

例子:

类型:123

结果:1​​23-

现在当光标在破折号后面并且你按下删除键时,我想删除破折号和破折号后面的字符。例如:

123-

删除键后的结果:12。怎么做。谢谢你的建议。

编辑

我的代码是:

 EditText editText;
boolean keyDel = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
editText.setOnKeyListener(new View.OnKeyListener() {

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
keyDel = true;
}
return keyDel;
}
});

editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String str = s.toString();
System.out.println(str.length());
if (str.length() == 3) {
str = str + "-";
} else if (str.length() == 7) {
str = str + "-";
} else if (str.length() % 4 == 0 && keyDel == true) {
str = str.substring(0, str.length() - 2);
} else {
return;
}
editText.setText(str);
editText.setSelection(editText.getText().length());
}

@Override
public void afterTextChanged(Editable s) {
}
});

}

我发现 Android 4.4.2 和 higer 不支持 keyevent。

最佳答案

onTextChanged 每次添加和删除内容时都会被调用。因此,如果您的字符串长度为 3,则添加您的 - 并且新长度为 4。如果您按删除键(新长度再次为 3),将调用 onTextChanged 并再次添加 - 。因此,只有在文本中没有删除任何内容的情况下才添加一些内容。

if (count > before) {
if (count == 3 || count == 7) {
str = str + "-";
} else {
return;
}
input.setText(str);
input.setSelection(input.getText().length());
}

关于Android edittext append 和 remove append,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33024891/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com