在我的应用程序(诗人/引用写作应用程序)中,用户应该能够选择文本的一部分,并在每次增量时将其变大(+7.f)或更小(-7.f)/减量按钮被按下。
我一直在尝试使用 AbsoluteSizeSpan
调整下面的代码(将当前选定的文本加粗)来增加/减小文本大小:
case R.id.bold:
styleSpans = str.getSpans(selectionStart, selectionEnd, StyleSpan.class);
// If the selected text-part already has BOLD style on it, then
// we need to disable it
for (int i = 0; i < styleSpans.length; i++) {
if (styleSpans[i].getStyle() == android.graphics.Typeface.BOLD) {
str.removeSpan(styleSpans[i]);
exists = true;
}
}
// Else we set BOLD style on it
if (!exists) {
str.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), selectionStart, selectionEnd, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
}
editText.setSelection(selectionStart, selectionEnd);
break;
这是我尝试适应内联大小变化的尝试:
case R.id.incline:
android.text.style.AbsoluteSizeSpan [] inclineSpan = str.getSpans(selectionStart, selectionEnd, android.text.style.AbsoluteSizeSpan.class);
str.setSpan(new android.text.style.AbsoluteSizeSpan(editText.setTextSize(TypedValue.COMPLEX_UNIT _PX, editText.getTextSize() + 7.f)), selectionStart, selectionEnd, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
editText.setSelection(selectionStart, selectionEnd);
break;
但是,此代码仅在按下增量按钮第一次时增加所选文本大小,而我希望每次按下增量按钮时都会增加所选文本大小被按下。我怎样才能实现这一目标?
最佳答案
我终于找到了一个解决方案,它完全符合我的要求,并且只需要两行代码:
case R.id.incline:
str.setSpan(new RelativeSizeSpan(1.1f), selectionStart, selectionEnd, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
editText.setSelection(selectionStart, selectionEnd);
break;
重要的更改是应用 RelativeSizeSpan(1.1f)
类型的范围,而不是 AbsoluteSizeSpan
类型的范围。 AbsoluteSizeSpan
根据 EditText
中的原始文本大小更改文本大小,RelativeSizeSpan
根据 EditText
中的原始文本大小更改文本大小。跨度中包含的每个字符的当前大小!
关于android - 如何增加 EditText 中选定文本的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33946561/