如何在单个editText中添加多个sytleSpan?

问题描述 投票:0回答:1

我正在使用editTextbuttons,并且布局包含四个按钮

  1. btnBold
  2. btnItalic
  3. btnStrike
  4. btnUnderline

和一个editText etDescription

现在,我在这里通过单击按钮来设置editText's selected text的样式

使用此代码时使用

CharacterStyle styleBold, styleItalic, styleUnderline, styleStrike;

 styleBold = new StyleSpan(Typeface.BOLD);
 styleItalic = new StyleSpan(Typeface.ITALIC);
 styleUnderline = new UnderlineSpan();
 styleStrike = new StrikethroughSpan();


 @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btnItalic:
                makeIt(styleItalic);
                break;

            case R.id.btnBold:
                makeIt(styleBold);
                break;

            case R.id.btnUnderline:
                makeIt(styleUnderline);
                break;
            case R.id.btnStrike:
                makeIt(styleStrike);
                break;
        }
    }

    private void makeIt(CharacterStyle characterStyle) {
        String wholeTextUnder = etDescription.getText().toString();
        int startu = etDescription.getSelectionStart();
        int endu = etDescription.getSelectionEnd();

        SpannableStringBuilder sbu = new SpannableStringBuilder(wholeTextUnder);

        sbu.setSpan(characterStyle, startu, endu, 0);
        etDescription.setText(sbu);
    }

正在给我整个editText一个single style

就像我选择文本1-10,然后使其变为粗体]时一样!

但是,当我选择其他文本时,将其设为italicstrikeunderline之类的其他文本,则先前的文本将变为正常且新更改成功。

[我希望文字内容也保持不变

等待回答!

提前感谢!

快乐编码!

我正在使用editText和按钮,布局包含四个按钮btnBold btnItalic btnStrike btnUnderline和一个editText etDescription

您的问题是当您呼叫String wholeTextUnder = etDescription.getText().toString();时,您已经将其更改为String,这意味着您设置的任何Span都会被清除。试试这个。
private void makeIt(CharacterStyle characterStyle) { CharSequence wholeTextUnder = etDescription.getText(); int startu = etDescription.getSelectionStart(); int endu = etDescription.getSelectionEnd(); SpannableStringBuilder sbu = new SpannableStringBuilder(wholeTextUnder); sbu.setSpan(characterStyle, startu, endu, 0); etDescription.setText(sbu); }
java android android-edittext styles
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.