android - 将常量文本放在应该不可编辑的 EditText 中 - Android

标签 android textview android-edittext material-design material-components-android

我想在 editText 中添加常量文本,例如:

http://<here_user_can_write>

用户应该无法从“http://”中删除任何字符,我对此进行了搜索,发现:

editText.setFilters(new InputFilter[] {
    new InputFilter() {
        public CharSequence filter(CharSequence src, int start,
            int end, Spanned dst, int dstart, int dend) {
            return src.length() < 1 ? dst.subSequence(dstart, dend) : "";
        }
    }
}); 

但我不知道它是否限制用户不能从 start 到 end 限制中删除任何字符。我也无法理解 Spanned 类的使用。

如果我们可以将 TextView 放在 EditText 中,那么一种方法将是一个不错的选择,但我认为这在 Android 中是不可能的,因为两者都是 View ,是吗可能吗?

最佳答案

你试过这个方法吗?

final EditText edt = (EditText) findViewById(R.id.editText1);

edt.setText("http://");
Selection.setSelection(edt.getText(), edt.getText().length());


edt.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            if(!s.toString().startsWith("http://")){
                edt.setText("http://");
                Selection.setSelection(edt.getText(), edt.getText().length());

            }

        }
    });

关于android - 将常量文本放在应该不可编辑的 EditText 中 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14195207/

相关文章:

android - Facebook Android sdk 在身份验证时抛出丢失的重定向 uri

java - android-support-v4.jar 没有在 Eclipse 中正确导入

android - 如何识别textview到达屏幕底部?

android - TextView 上的缩放控件?

android - 如何通过android中的软键盘以编程方式将我的EditText输入限制为一些特殊字符,如反斜杠(/),tild(〜)等

android - 软键盘将所有布局向上移动

Android Espresso 2 结束通话

android - 如何缩放,移动和放大,缩小Textview?

android - 更改 EditText 错误信息的背景

android - 如果我扩展 Activity,ImageView 保持为空,但如果我扩展 AppCompatActivity,则按预期工作