2017-02-22 18 views
1

В настоящее время я пытаюсь получить выбор ввода из списка предпочтений, который имеет (курсив, жирный, подчеркнутый) стили в нем, но я не совсем уверен, как это сделать.Android Studio Shared Preferences Set Font Style

В прошлом я успешно сделал это для типа, размера и цвета шрифта.

шрифт Тип Пример: Размер

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

Как я могу достичь того же идею, но со стилями шрифта, такие как полужирный, курсив, подчеркнутый?

ответ

0

Я думаю, что вы можете сделать это путь

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

В основном Typeface.BOLD, Typeface.BOLD_ITALIC, Typeface.ITALIC, Typeface.NORMAL является INT, как this link сказал.

+0

жалуется на строку «Typeface.NORMAL» по какой-то причине – EzioBahin

+0

Извините, я исправил 'getString'' getInt' сейчас. – bismute

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

Жалоба на «Typeface.Normal» и на «Integer.toString (font_face)); – EzioBahin

+0

, так как я предполагаю, что параметры share can not принимают int как второй параметр – EzioBahin

+0

да, что я изменил в своем ответе –

0

Я могу только ответить на вопрос, для BOLD и Курсив (я не думаю, что можно специально подчеркнуть 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 

Но для того, чтобы это работало, вы должны убедиться, что актив вы создаете шрифт из поддерживает различные стили шрифтов (которые, как правило, не случай, насколько мне известно).

Смежные вопросы