android - 如何增加 EditText 中选定文本的大小?

标签 android android-edittext

在我的应用程序(诗人/引用写作应用程序)中,用户应该能够选择文本的一部分,并在每次增量时将其变大(+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/

相关文章:

javascript - 适用于 Android 的 PhoneGap 相机 API - 未捕获的异常

Android 编辑文本 : How to apply Foreground color span as you type?

android - getText().toString() 在输入的内容之前添加一些数字

android - 空 EditText 问题

Android:为什么我的 EditText 保持其值(value),即使在方向改变时也是如此?

java - 我正在尝试使用我的注册页面中的共享首选项并在另一个类上检索它,但它在 logcat 中给了我错误

java - 隐藏状态栏android时的白条一瞥(如何让它像Whatsapp状态一样)

java - Android 自定义 ArrayAdapter - 崩溃

java - 执行每秒更新 UI 的 runnable 时出现问题

android - 在隐藏密码字符之前先显示一段时间