Java 如何在单个editText中添加多个sytleSpan?
我使用的是Java 如何在单个editText中添加多个sytleSpan?,java,android,android-edittext,styles,Java,Android,Android Edittext,Styles,我使用的是editText和按钮,布局包含四个按钮 btnBold B硝酸盐 btnStrike B基准线 和一个editTextetDescription 现在,我通过单击按钮来设置我的editText所选文本的样式 使用此代码 CharacterStyle styleBold, styleItalic, styleUnderline, styleStrike; styleBold = new StyleSpan(Typeface.BOLD); styleItalic = new Sty
editText
和按钮
,布局包含四个按钮
editText
etDescription
现在,我通过单击按钮来设置我的editText所选文本的样式
使用此代码
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
a单一风格
就像我选择文本1-10,然后将其设置为粗体一样,它可以工作
但是,当我选择其他文本,然后将其设置为其他文本,如斜体
,删除
,下划线
,那么以前的文本将变为正常文本,新的更改将成功
我希望perivous文本也保持不变
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);
}
等待回答
提前谢谢
快乐编码 问题在于调用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);
}
您能告诉我如何获取spannable text
和etDescription.getText().toString()代码>给我的是没有任何样式的简单文本你是什么意思?您想知道为什么toString方法给出的文本没有正确的样式?