Android Studio共享首选项集字体样式

Android Studio共享首选项集字体样式,android,android-studio,fonts,mobile-development,Android,Android Studio,Fonts,Mobile Development,目前,我正在尝试从列表首选项中获取输入选项,其中包含(斜体、粗体、下划线)样式,但我不太确定如何具体实现这一点 在过去,我成功地做到了字体类型、大小和颜色 字体类型示例: SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); String s = sharedPreferences.getString("f

目前,我正在尝试从列表首选项中获取输入选项,其中包含(斜体、粗体、下划线)样式,但我不太确定如何具体实现这一点

在过去,我成功地做到了字体类型、大小和颜色

字体类型示例:

         SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    String s = sharedPreferences.getString("font_list", "gnuolane rg.ttf");
    Typeface face = Typeface.createFromAsset(getAssets(), "fonts/" + s);
    editText.setTypeface(face);
         String s2 = sharedPreferences.getString("font_size", "8");
    editText.setTextSize(Float.parseFloat(s2))
字体大小示例:

         SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    String s = sharedPreferences.getString("font_list", "gnuolane rg.ttf");
    Typeface face = Typeface.createFromAsset(getAssets(), "fonts/" + s);
    editText.setTypeface(face);
         String s2 = sharedPreferences.getString("font_size", "8");
    editText.setTextSize(Float.parseFloat(s2))

我怎样才能实现同样的想法,但使用粗体、斜体、下划线等字体样式?

我想你可以这样做

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
int font_face = sharedPreferences.getInt("font_face", Typeface.NORMAL);
editText.setTypeface(Integer.toString(font_face));

基本上,
Typeface.BOLD
Typeface.BOLD\u ITALIC
Typeface.ITALIC
Typeface.NORMAL
就是说int的。

我想你可以这样做

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
int font_face = sharedPreferences.getInt("font_face", Typeface.NORMAL);
editText.setTypeface(Integer.toString(font_face));
基本上是
Typeface.BOLD
Typeface.BOLD\u ITALIC
Typeface.ITALIC
Typeface.NORMAL
如前所述为int。

试试这个

存储字体样式

private void storeFontStyle(int style){

        SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor=sharedPreferences.edit();

        editor.putInt("font_face", style);

        editor.apply();

    }
private int getFontStyle(){

    SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int font_face = sharedPreferences.getInt("font_face", Typeface.NORMAL);

    return font_face;
}
int font_face=getFontStyle();

    editText.setTypeface(null, font_face);
获取字体样式

private void storeFontStyle(int style){

        SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor=sharedPreferences.edit();

        editor.putInt("font_face", style);

        editor.apply();

    }
private int getFontStyle(){

    SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int font_face = sharedPreferences.getInt("font_face", Typeface.NORMAL);

    return font_face;
}
int font_face=getFontStyle();

    editText.setTypeface(null, font_face);
访问字体样式

private void storeFontStyle(int style){

        SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor=sharedPreferences.edit();

        editor.putInt("font_face", style);

        editor.apply();

    }
private int getFontStyle(){

    SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int font_face = sharedPreferences.getInt("font_face", Typeface.NORMAL);

    return font_face;
}
int font_face=getFontStyle();

    editText.setTypeface(null, font_face);
试试这个

存储字体样式

private void storeFontStyle(int style){

        SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor=sharedPreferences.edit();

        editor.putInt("font_face", style);

        editor.apply();

    }
private int getFontStyle(){

    SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int font_face = sharedPreferences.getInt("font_face", Typeface.NORMAL);

    return font_face;
}
int font_face=getFontStyle();

    editText.setTypeface(null, font_face);
获取字体样式

private void storeFontStyle(int style){

        SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor=sharedPreferences.edit();

        editor.putInt("font_face", style);

        editor.apply();

    }
private int getFontStyle(){

    SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int font_face = sharedPreferences.getInt("font_face", Typeface.NORMAL);

    return font_face;
}
int font_face=getFontStyle();

    editText.setTypeface(null, font_face);
访问字体样式

private void storeFontStyle(int style){

        SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor=sharedPreferences.edit();

        editor.putInt("font_face", style);

        editor.apply();

    }
private int getFontStyle(){

    SharedPreferences sharedPreferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int font_face = sharedPreferences.getInt("font_face", Typeface.NORMAL);

    return font_face;
}
int font_face=getFontStyle();

    editText.setTypeface(null, font_face);

我只能回答粗体和斜体的问题(我认为不可能在编辑文本下面加下划线,但我可能错了):

如您所见,样式只是字体内部的一个整数变量,可以通过
editText.getTypeface().getStyle()
(然后保存到SharedReferences)读取

样式的可能值为:

Typeface.NORMAL
Typeface.BOLD
Typeface.ITALIC
Typeface.BOLD_ITALIC

但是,为了实现这一点,您必须确保创建字体所用的资源支持不同的字体样式(据我所知,这通常不是这种情况)。

我只能回答粗体和斜体的问题(我认为不可能在EditText下面加下划线,但我可能错了):

如您所见,样式只是字体内部的一个整数变量,可以通过
editText.getTypeface().getStyle()
(然后保存到SharedReferences)读取

样式的可能值为:

Typeface.NORMAL
Typeface.BOLD
Typeface.ITALIC
Typeface.BOLD_ITALIC

但是,为了实现这一点,您必须确保创建字体的资源支持不同的字体样式(据我所知,这通常不是这种情况)。

它抱怨“Typeface.Normal”和“Integer.toString(font\u face)”);既然我猜共享首选项不能将int作为第二个参数,你检查过了吗?是的。这让应用程序crashIt抱怨“Typeface.Normal”和“Integer.toString(font_face));因为我猜共享首选项不能将int作为第二个参数,你检查了吗?是的。由于某种原因,它使应用程序崩溃了,对“Typeface.NORMAL”行进行了抱怨抱歉,我现在将
getString
改为
getInt
。对“Typeface.NORMAL”行进行了抱怨出于某种原因抱歉,我现在将
getString
改为
getInt