使用 Android 使 EditText 中的一些预填充字符不可编辑
Make few prefilled characters uneditable in EditText using Android
我正在研究 EditText
,我在开始时显示预填充的国家/地区代码让我们说“+971”,我想要的是如果用户尝试在 EditText
中单击和编辑,他不应该编辑或删除“+971”,只能在后面加上数字,比如“+971 123445579”,如果试图删除数字,那么“+971”不应该被删除。
我的代码如下,请指导我如何实现。谢谢
private fun setupTextChangeListener() {
edit_text.textWatcherListener = object : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
setDatePickerIconOnDemand()
}
override fun afterTextChanged(s: Editable?) {
}
}
}
// 在这个方法中,我将 Start Drawable 放在 EditText 中:
private fun setDatePickerIconOnDemand() {
edit_text.setDrawableStart(context.drawable(R.drawable.ic_earh_arrow_down_default))
edit_text.setDrawable()
}
您可以在 onTextChanged
回调
中添加以下代码行
if (edit_text.length() < 5 || !edit_text.text!!.startsWith("+971 ")) {
edit_text.setText("+971 ")
edit_text.setSelection(edit_text.length())
}
它将做的是:它将检查 onTextChanged '如果您当前编辑文本中的文本只是您的国家/地区代码,请在您的 editText 中设置国家/地区代码并将光标移动到末尾。
我正在研究 EditText
,我在开始时显示预填充的国家/地区代码让我们说“+971”,我想要的是如果用户尝试在 EditText
中单击和编辑,他不应该编辑或删除“+971”,只能在后面加上数字,比如“+971 123445579”,如果试图删除数字,那么“+971”不应该被删除。
我的代码如下,请指导我如何实现。谢谢
private fun setupTextChangeListener() {
edit_text.textWatcherListener = object : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
setDatePickerIconOnDemand()
}
override fun afterTextChanged(s: Editable?) {
}
}
}
// 在这个方法中,我将 Start Drawable 放在 EditText 中:
private fun setDatePickerIconOnDemand() {
edit_text.setDrawableStart(context.drawable(R.drawable.ic_earh_arrow_down_default))
edit_text.setDrawable()
}
您可以在 onTextChanged
回调
if (edit_text.length() < 5 || !edit_text.text!!.startsWith("+971 ")) {
edit_text.setText("+971 ")
edit_text.setSelection(edit_text.length())
}
它将做的是:它将检查 onTextChanged '如果您当前编辑文本中的文本只是您的国家/地区代码,请在您的 editText 中设置国家/地区代码并将光标移动到末尾。