我正在使用editText
和buttons
,并且布局包含四个按钮
和一个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,然后使其变为粗体]时一样!
但是,当我选择其他文本时,将其设为italic
,strike
,underline
之类的其他文本,则先前的文本将变为正常且新更改成功。
[我希望文字内容也保持不变
等待回答!
提前感谢!
快乐编码!
我正在使用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);
}