Android PostTextChanged追加不工作
出于某种原因,该代码不起作用。我把它简化为它应该是什么的核心。理想情况下,您将看到“1234-5678-1234-5678”作为输出,因为我最多使用16位数字。我将它用于Android PostTextChanged追加不工作,android,android-edittext,Android,Android Edittext,出于某种原因,该代码不起作用。我把它简化为它应该是什么的核心。理想情况下,您将看到“1234-5678-1234-5678”作为输出,因为我最多使用16位数字。我将它用于text.setText(s.toString()+“-”),然后在后期运行中,将选择设置为s.length()+1,但append会为您解决这个问题。此外,在setSelection生效之前的几毫秒内,由于setext的原因,您可以判断光标返回到起始位置 为什么不工作?试试这段代码。工作正常 text.addOnTextCha
text.setText(s.toString()+“-”)
,然后在后期运行中,将选择设置为s.length()+1
,但append会为您解决这个问题。此外,在setSelection
生效之前的几毫秒内,由于setext
的原因,您可以判断光标返回到起始位置
为什么不工作?试试这段代码。工作正常
text.addOnTextChanged(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
if (s.length() == 4 || s.length() == 9 || s.length() == 14) {
text.append("-");
}
}
}
editText.addTextChangedListener(新的TextWatcher(){
xml edittext声明中的输入类型不应为“数字”。请用如下数字替换输入类型:
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
if (arg2 == 0) {
if (arg0.length() == 4 || arg0.length() == 9
|| arg0.length() == 14) {
editText.append("-");
}
} else {
if (arg0.length() == 4 || arg0.length() == 9
|| arg0.length() == 14) {
editText.append("");
}
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
}
});
不要使用此方法。乍一看它似乎可以正常工作。但是,当您尝试删除(退格)时,将再次调用
posterextchanged
,它将恢复删除所做的更改。只需将输入类型更改为“phone”即可
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
if (arg2 == 0) {
if (arg0.length() == 4 || arg0.length() == 9
|| arg0.length() == 14) {
editText.append("-");
}
} else {
if (arg0.length() == 4 || arg0.length() == 9
|| arg0.length() == 14) {
editText.append("");
}
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
}
});
android:digits="0123456789 -."
private fun setNumberChangeListener(){
var actionDelete = false
cardNumber.addTextChangedListener(object : TextWatcher{
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
actionDelete = after == 0
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
override fun afterTextChanged(s: Editable?) {
s?.let {
when (it.length) {
4, 9, 14 -> {
if (!actionDelete)
it.append(" ")
else
it.delete(s.lastIndex, s.lastIndex+1.coerceAtMost(s.lastIndex))
}
else -> {}
}
}
}
})
}