使用 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 中设置国家/地区代码并将光标移动到末尾。