为了账号安全,请及时绑定邮箱和手机立即绑定

使用共享首选项更改字体样式

使用共享首选项更改字体样式

幕布斯7119047 2021-06-08 13:01:57
代码Button mButton1;String mDefaultFont1;SharedPreferences mSharedPreferences1;SharedPreferences.Editor editor1; mButton1 = (Button)findViewById(R.id.buttontextfontsent); mSharedPreferences1 = PreferenceManager.getDefaultSharedPreferences(this); mDefaultFont1 = mSharedPreferences1.getString("Default_Font1","Normal"); mButton1.setTypeface(mButton1.getTypeface(),Typeface.NORMAL);mButton1.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        final String[] list = new String[]{"Normal", "Bold", "Italic", "Bold ITalic"};        AlertDialog.Builder builder = new AlertDialog.Builder(CustomizeFont.this);        builder.setTitle("Make your selection");        builder.setItems(list, new DialogInterface.OnClickListener() {            public void onClick(DialogInterface dialog, int item) {                if (item==0) mButton1.setTypeface(mButton1.getTypeface(),Typeface.NORMAL);                if (item==1) mButton1.setTypeface(mButton1.getTypeface(),Typeface.BOLD);                if (item==2) mButton1.setTypeface(mButton1.getTypeface(),Typeface.ITALIC);                if (item==3) mButton1.setTypeface(mButton1.getTypeface(),Typeface.BOLD_ITALIC);                editor1 = PreferenceManager.getDefaultSharedPreferences(CustomizeFont.this).edit();                 editor1.putString("Default_Font1", String.valueOf(item));                editor1.apply();            }        });        builder.show();    }});我可以更改字体,但是当我重新启动 Activity 时,它会恢复到原来的正常字体……问题出在这一行 mButton1.setTypeface(mButton1.getTypeface(),Typeface.NORMAL);我需要设置TypeFace.NORMAL为Default_Font1但不接受...我该怎么办?
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

我需要将 textview 设置为 Default_Font1 但不接受...我该怎么办?


你需要setTypeface 在你的button基础上,你从获取值SharedPreferences


示例代码


mDefaultFont1 = mSharedPreferences1.getString("Default_Font1","0");

if (mDefaultFont1.equals("0")) {

    mButton1.setTypeface(mButton1.getTypeface(), Typeface.NORMAL);

} else if (mDefaultFont1.equals("1")) {

    mButton1.setTypeface(mButton1.getTypeface(), Typeface.BOLD);

} else if (mDefaultFont1.equals("2")) {

    mButton1.setTypeface(mButton1.getTypeface(), Typeface.ITALIC);

} else if (mDefaultFont1.equals("3")) {

    mButton1.setTypeface(mButton1.getTypeface(), Typeface.BOLD_ITALIC);

}


mButton1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {


    final String[] list = new String[]{"Normal", "Bold", "Italic", "Bold ITalic"};

    AlertDialog.Builder builder = new AlertDialog.Builder(CustomizeFont.this);

    builder.setTitle("Make your selection");

    builder.setItems(list, new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int item) {

            if (item==0) mButton1.setTypeface(null);

            if (item==1) mButton1.setTypeface(mButton1.getTypeface(),Typeface.BOLD);

            if (item==2) mButton1.setTypeface(mButton1.getTypeface(),Typeface.ITALIC);

            if (item==3) mButton1.setTypeface(mButton1.getTypeface(),Typeface.BOLD_ITALIC);

            editor1 = PreferenceManager.getDefaultSharedPreferences(CustomizeFont.this).edit();

             editor1.putString("Default_Font1", String.valueOf(item));

            editor1.apply();


        }

    });

    builder.show();

 }

 });


查看完整回答
反对 回复 2021-06-17
?
白衣非少年

TA贡献1155条经验 获得超0个赞

试试这个 。

editor.putInt("fontCode",mButton1.getTypeFace().getStyle());

然后将其用作正常的共享偏好


查看完整回答
反对 回复 2021-06-17
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

mDefaultFont1 = mSharedPreferences1.getString("Default_Font1","Normal");

mButton1.setTypeface(mButton1.getTypeface(),Typeface.NORMAL);

这个逻辑是完全错误的,请记住,您将 int 值保存在首选项 (0, 1, 2, 3) 中,但首先将其加载为默认值“正常”的字符串。


在第二行中,您正在为按钮设置字体,但从同一按钮获取当前字体,那么您得到了什么?没有变化。


相反,我建议这样的事情:


mDefaultFont1 = mSharedPreferences1.getInt("Default_Font1",0);

mButton1.setTypeface(mDefaultFont1);

并像这样保存首选项:


public void onClick(DialogInterface dialog, int item) {

    int defaultTypeface = 0;

    if (item==0) defaultTypeface = Typeface.NORMAL;

    if (item==1) defaultTypeface = Typeface.BOLD;

    if (item==2) defaultTypeface = Typeface.ITALIC;

    if (item==3) defaultTypeface = Typeface.BOLD_ITALIC;

    mButton1.setTypeface(defaultTypeface);

    editor1 = PreferenceManager.getDefaultSharedPreferences(CustomizeFont.this).edit();

    editor1.putInt("Default_Font1", defaultTypeface);

    editor1.apply();

}


请注意,我的代码可能有点错误,因为我确实从内存中编写了它并且没有检查它是否真的很好。


查看完整回答
反对 回复 2021-06-17
  • 3 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信