这代码这么好怎么就用不上了呢(抹泪)
下面亲测可用
Button underline=(Button)findViewById(R.id.underline);
underline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int start =edit_passage.getSelectionStart();
int end = edit_passage.getSelectionEnd();
SpannableStringBuilder ssb = new SpannableStringBuilder(edit_passage.getEditableText());
ssb.setSpan(new UnderlineSpan(), start, end, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
edit_passage.setText(ssb);
}
});
加粗与取消(取消!!!)这个取消我测试了好久好久才好……
Button bold = (Button) findViewById(R.id.bold);
bold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int start = edit_passage.getSelectionStart();
int end = edit_passage.getSelectionEnd();
SpannableStringBuilder ss = (SpannableStringBuilder) edit_passage.getEditableText();//subSequence(start,end);
int num = 0;
int cnt = 0;
for (int i = start; i <= end; i++) {
StyleSpan[] spans = ss.getSpans(i, i, StyleSpan.class);
num++;
for (int j = 0; j < spans.length; j++) {
if (spans[j].getStyle() == Typeface.BOLD)
cnt++;
}
}
if (cnt == num) {
StyleSpan[] spans = ss.getSpans(start, end, StyleSpan.class);
for (int j = 0; j < spans.length; j++) {
if (spans[j].getStyle() == Typeface.BOLD)
ss.removeSpan(spans[j]);
}
} else {
ss.setSpan(new StyleSpan(Typeface.BOLD), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
edit_passage.setText(ss);
}
edit_passage.setText(ss);
}
});
下划线道理相同,以后换个什么的话 只需把setspan里面那个stylespan修改一下即可。
直接remove似乎是不行的,要先去获取到~~~~ 好像是必须要属于它才可以
Button italic = (Button) findViewById(R.id.italic);
italic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int start = edit_passage.getSelectionStart();
int end = edit_passage.getSelectionEnd();
SpannableStringBuilder ss = (SpannableStringBuilder) edit_passage.getEditableText();
int num = 0;
int cnt = 0;
for (int i = start; i <= end; i++) {
StyleSpan[] spans = ss.getSpans(i, i, StyleSpan.class);
num++;
for (int j = 0; j < spans.length; j++) {
if (spans[j].getStyle() == Typeface.ITALIC)
cnt++;
}
}
if (cnt == num) {
StyleSpan[] spans = ss.getSpans(start, end, StyleSpan.class);
for (int j = 0; j < spans.length; j++) {
if (spans[j].getStyle() == Typeface.ITALIC)
ss.removeSpan(spans[j]);
}
} else {
ss.setSpan(new StyleSpan(Typeface.ITALIC), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
edit_passage.setText(ss);
}
edit_passage.setText(ss);
}
});