首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setTextSize不支持SharedPreferences

setTextSize不支持SharedPreferences
EN

Stack Overflow用户
提问于 2020-11-11 00:01:34
回答 1查看 32关注 0票数 0

您好,我想为我的应用程序实现不同的文本大小,我尝试了共享首选项这是我的代码

声明SharedPreferences

代码语言:javascript
复制
final  SharedPreferences savedFields;

    savedFields = this.getSharedPreferences("stoixeiaios", 0);
    stoixeia.setText(savedFields.getString("stoixeiadieth", ""));
    stoixeia2.setText(savedFields.getString("stoixeiaonoma", ""));

    logos1.setTextSize(savedFields.getFloat("megethos1",12));
    logos2.setTextSize(savedFields.getFloat("megethos2",12));
    logos3.setTextSize(savedFields.getFloat("megethos3",12));
    logos4.setTextSize(savedFields.getFloat("megethos4",12));
    logos5.setTextSize(savedFields.getFloat("megethos5",12));
    logos6.setTextSize(savedFields.getFloat("megethos6",12));

该按钮用于更改文本大小并将值保存到sharedpreferences

代码语言:javascript
复制
**    button4.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                SharedPreferences.Editor preferencesEditor = savedFields.edit();
                logos1.setTextSize(TypedValue.COMPLEX_UNIT_PX,24));
                logos2.setTextSize(TypedValue.COMPLEX_UNIT_PX,24);
                logos3.setTextSize(TypedValue.COMPLEX_UNIT_PX,24);
                logos4.setTextSize(TypedValue.COMPLEX_UNIT_PX,24);
                logos5.setTextSize(TypedValue.COMPLEX_UNIT_PX,24);
                logos6.setTextSize(TypedValue.COMPLEX_UNIT_PX,24);


                preferencesEditor.putFloat("megethos1", logos1.getTextSize());
                preferencesEditor.putFloat("megethos2", logos2.getTextSize());
                preferencesEditor.putFloat("megethos3", logos3.getTextSize());
                preferencesEditor.putFloat("megethos4", logos4.getTextSize());
                preferencesEditor.putFloat("megethos5", logos5.getTextSize());
                preferencesEditor.putFloat("megethos6", logos6.getTextSize());

                preferencesEditor.commit();
            }
        });**

我不知道我做错了什么

感谢您的宝贵时间

编辑:我忘记发布这个问题了

问题是应用程序终止后保存的值总是错误的,例如,当我单击按钮更改文本大小时,文本大小发生变化,然后我终止应用程序并重新打开它,而文本大小比预期的要大

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-11 00:57:18

问题是您正在设置以像素为单位的文本大小。您需要做的是将其转换为密度像素。

为此,您可以使用此方法

代码语言:javascript
复制
public int pxToDp(float px) {
    return (int) (px / Resources.getSystem().getDisplayMetrics().density);
}

因此,在设置文本大小时,应该调用

代码语言:javascript
复制
float textSize = savedFields.getFloat("megethos1",12);
logos1.setTextSize(pxToDp(textSize));

对于每个TextView。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64772376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档