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

代码


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但不接受...我该怎么办?


幕布斯7119047
浏览 146回答 3
3回答

aluckdog

我需要将 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() {@Overridepublic 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(); } });

白衣非少年

试试这个 。editor.putInt("fontCode",mButton1.getTypeFace().getStyle());然后将其用作正常的共享偏好

小怪兽爱吃肉

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();}请注意,我的代码可能有点错误,因为我确实从内存中编写了它并且没有检查它是否真的很好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java