android - 让用户改变字体大小

标签 android fonts font-size android-fonts

在我的 dimens.xml 中我有:

<dimen name="text_small">16sp</dimen>
<dimen name="text_normal">18sp</dimen>
<dimen name="text_medium">20sp</dimen>
<dimen name="text_big">22sp</dimen>

现在我想让用户在设置 fragment 中选择字体大小。比方说:

  1. 小-2sp
  2. 正常 +0sp
  3. 中 +2sp
  4. 大+4sp

例如,如果用户选择“大”,我希望字体大小为:

<dimen name="text_small">20sp</dimen>
<dimen name="text_normal">22sp</dimen>
<dimen name="text_medium">24sp</dimen>
<dimen name="text_big">26sp</dimen>

有没有办法做这样的事情:

申请开始:

if (sizeUser.equals("Big")) {
    text_small=24sp
.....
}

等等?

最佳答案

而不是必须打电话 setTextSize对于每个 Activity 中的每个 TextView,我都会创建一个自定义类来扩展 TextView,然后包含在其 setTextSize 中设置文本大小的逻辑。 .

public class MyTextView extends TextView {

    public MyTextView(Context context) {
        super(context);
    }

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void setTextSize (int unit, float size){
        switch(USER_SET_SIZE){
            case SMALL:
                setTextSize(TypedValue.COMPLEX_UNIT_SP, -2);
                break;
            case MEDIUM:
                setTextSize(TypedValue.COMPLEX_UNIT_SP, 2);
                break;
            case LARGE:
                setTextSize(TypedValue.COMPLEX_UNIT_SP, 4);
                break;
            case NORMAL:
            default:
                setTextSize(TypedValue.COMPLEX_UNIT_SP, 0);
                break;
        }
    }
}

或者,如果您使用多个 View 并希望控制每个 View 的文本大小,我建议您使用主题,然后根据您的字体大小更改您的主题。只需调用 setTheme()在你的 Activity 中 onCreate()第一的。

你的主题文件应该是这样的

<style name="NormalSizeTheme" parent="@style/MyTheme">
    <item name="android:textSize">0sp</item>
</style>

关于android - 让用户改变字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31034341/

相关文章:

javascript - parseInt() 和 parseFloat() 的区别

android - 如何在 480x800 和 1280x760 屏幕上使用不同的字体大小?

java - 将字符串从 Java 类迁移到资源

Android avd 离屏

javascript - 如何在每次刷新页面时为一行文本生成随机字体?

html - Socicon 字体不显示 @font-face

字段为空时的 Android 房间顺序

java - 如何在 Android JAVA 中将具有 RGB 颜色的 HTML 字符串转换为具有十六进制颜色的 HTML 字符串

android - 如何更改 TextView 上的字体?

Java - 如何获取 JTextPane 的默认字体大小