我正在使用共享首选项更改TextView
的大小。我完全相信我已经在设置中正确编写了代码,因此我不确定我的片段是否正确。我想知道是否有人会介意识别问题并纠正它。
谢谢
prefsize = this.getActivity().getSharedPreferences(prefnamesize, Context.MODE_PRIVATE);
tx.setTextSize(prefsize.getFloat(FONT_SIZE_KEY, 25));
答案 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