使用片段中的共享首选项更改字体大小

时间:2017-05-23 06:47:27

标签: java android

我正在使用共享首选项更改TextView的大小。我完全相信我已经在设置中正确编写了代码,因此我不确定我的片段是否正确。我想知道是否有人会介意识别问题并纠正它。 谢谢

prefsize = this.getActivity().getSharedPreferences(prefnamesize, Context.MODE_PRIVATE);
tx.setTextSize(prefsize.getFloat(FONT_SIZE_KEY, 25));

2 个答案:

答案 0 :(得分:0)

这不是用于此目的的正确/最佳实践

  

存储所有文字大小或与' dp'相关的任何内容或者' sp'在values文件夹中的dimen.xml中

示例

dimen.xml

<resources>
    <dimen name="textSizeMedium">16sp</dimen>
</resources>

访问您的布局文件:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    ...

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="@dimen/textSizeMedium" />  // <----- This is the way

    ...

</FrameLayout>

或动态Java代码(Activity)

tx.setTextSize(getResources().getDimension(R.dimen.textSizeMedium));

(片段)

tx.setTextSize(getActivity().getResources().getDimension(R.dimen.textSizeMedium));

答案 1 :(得分:0)

也许为时已晚,但我找到了方法。在您的dimens.xml中必须这样

<resources>
<dimen name="code_editor_size1">11sp</dimen>
</resources>

然后,在Java中,当用户按下size按钮时,需要执行此操作

settings.edit().putString("textSize", String.valueOf((long)((float)getResources().getDimension(R.dimen.code_editor_size1)))).commit(); 

最后,在文本视图中使用

if (settings.getString("textSize", "").equals("")) {
    
}
else {
    textSize = Double.parseDouble(settings.getString("textSize", ""));
    code.setTextSize(TypedValue.COMPLEX_UNIT_PX, (float)textSize);
}

我想提到的是,当我获得值时,我使用Double变量获得了它,这是我唯一可以做到的方法,并且代码是编辑文本的ID