Android Studio共享首选项设置字体样式

时间:2017-02-22 08:52:10

标签: android android-studio fonts mobile-development

目前我试图从列表首选项中获取输入选项,其中包含(斜体,粗体,下划线)样式,但我不确定如何具体完成此操作。

过去,我已经成功完成了字体类型,大小和颜色。

字体类型示例:

         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))

我如何实现相同的想法,但使用字体样式,例如Bold,Italic,Underlined?

3 个答案:

答案 0 :(得分:0)

我认为你可以这样做

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

基本上Typeface.BOLDTypeface.BOLD_ITALICTypeface.ITALICTypeface.NORMALthis link所说的int。

答案 1 :(得分:0)

试试这个。

存储字体样式

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);

答案 2 :(得分:0)

我只能回答 BOLD ITALIC 的问题(我不认为可以明确强调 EditText ,但我可能错了):

String fontSize = sharedPreferences.getString("font_size", "8");
String style= sharedPreferences.getInt("font_style", TypeFace.NORMAL);
String font = sharedPreferences.getString("font_list", "gnuolane rg.ttf");
Typeface face = Typeface.create(Typeface.createFromAsset(getAssets(), "fonts/" + s),style);
editText.setTextSize(Float.parseFloat(fontSize ))

正如您所看到的,样式只是字体中的整数变量,可以通过editText.getTypeface().getStyle()读取(然后保存到 sharedPreferences )。

该样式的可能值为:

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

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