Android 如果在EditText中的跨距文本之前添加了一些文本,如何自动更改跨距位置?

Android 如果在EditText中的跨距文本之前添加了一些文本,如何自动更改跨距位置?,android,spannablestring,spannable,spanned,android-editable,Android,Spannablestring,Spannable,Spanned,Android Editable,我正在创建一个应用程序,其中edittext将样式范围添加到文本的某些位置 editable.setSpan(new StyleSpan(Typeface.BOLD), start, start+replacement.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 我的问题是,如果用户添加,在跨距文本样式之前的一些文本或空白将被删除,如何避免 int SPAN_COMPOSING = 256; int SPAN_EXCLUSIVE_EX

我正在创建一个应用程序,其中edittext将样式范围添加到文本的某些位置

editable.setSpan(new StyleSpan(Typeface.BOLD), start, start+replacement.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
我的问题是,如果用户添加,在跨距文本样式之前的一些文本或空白将被删除,如何避免

    int SPAN_COMPOSING = 256;
    int SPAN_EXCLUSIVE_EXCLUSIVE = 33;
    int SPAN_EXCLUSIVE_INCLUSIVE = 34;
    int SPAN_INCLUSIVE_EXCLUSIVE = 17;
    int SPAN_INCLUSIVE_INCLUSIVE = 18;
    int SPAN_INTERMEDIATE = 512;
    int SPAN_MARK_MARK = 17;
    int SPAN_MARK_POINT = 18;
    int SPAN_PARAGRAPH = 51;
    int SPAN_POINT_MARK = 33;
    int SPAN_POINT_MARK_MASK = 51;
    int SPAN_POINT_POINT = 34;
    int SPAN_PRIORITY = 16711680;
    int SPAN_PRIORITY_SHIFT = 16;
    int SPAN_USER = -16777216;
    int SPAN_USER_SHIFT = 24;

在我的案例中需要使用哪种类型?

您可以使用下面的代码

editable.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) {
                // here is your code to change position
            }

            @Override
            public void afterTextChanged(Editable s) {

            }

        });

使用TextWatcher。每次文本更改时,您都会收到一个回调。在那里使用setSpan。你能再次阅读我的问题吗?我知道这可能有点晚了,但你应该首先确保你的跨距是可编辑的。长度。如果你不想跨距向左或向右扩展,排他(EXCLUSIVE)是最好的。但是,如果你跨越的是一个单词的一部分,而这个单词只是愚蠢。你可以通过禁用自动更正
android:inputType=“textMultiLine | textcap句子| textShortMessage | textVisiblePassword”
在EditText Xml中,请详细说明,或者如果可能的话,在它的图像之前和之后发送给我。