在我的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>
现在我想让用户在设置片段中选择字体大小。比方说吧:
因此,例如,如果用户选择“Big”,我希望字体大小为:
<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
.....
}
等等?
答案 0 :(得分:1)
我不是必须为每个Activity中的每个TextView调用setTextSize
,而是创建一个扩展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;
}
}
}
或者,如果您使用多个视图并希望控制每个视图的文本大小,我建议使用主题,然后根据您的字体大小更改主题。只需先在您的活动setTheme()
中致电onCreate()
。
您的主题文件应如下所示
<style name="NormalSizeTheme" parent="@style/MyTheme">
<item name="android:textSize">0sp</item>
</style>
答案 1 :(得分:0)
您无需使用dimens.xml
。相反,请使用setTextSize
TextView tv = findViewById(R.id.textView);
if ("Big".equals(sizeUser) {
tv.setTextSize(26);
}