在我的 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 中选择字体大小。比方说:
- 小-2sp
- 正常 +0sp
- 中 +2sp
- 大+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/