2017-02-20 8 views
0

На данный момент я пытаюсь запустить эти строки кода:Android Studio, Общие предпочтения Установить цвет текста

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTitle("Tell me"); 
    setContentView(R.layout.activity_post); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true) 
    ; 
    editText = (EditText) findViewById(R.id.editText1); 
    textView = (TextView) findViewById(R.id.textView); 

    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    String s = sharedPreferences.getString("font_list", "null"); 
    Typeface face = Typeface.createFromAsset(getAssets(), "fonts/" + s); 
    editText.setTypeface(face); 

    String s2 = sharedPreferences.getString("font_size", "8"); 
    editText.setTextSize(Float.parseFloat(s2)); 

    String s3 = sharedPreferences.getString("font_color", "#000"); 
    editText.setTextColor(Color.parseColor(s3)); 



    // File directory = new File(path); 
    // directory.mkdirs(); 
} 
  • Я пытаюсь установить и сохранить цвета, выбор пользователя, чтобы позволить им ввести в этом цвете, но всякий раз, когда я пытаюсь запустить приложение или делать что-либо в приложении, он выходит из строя из-за функции setTextColor и sharePreferences внутри строки для него.

здесь LogCat изображения

enter image description here

+0

Вы можете поделиться своим logcat? – Nhan

+0

Все работает отлично для установки шрифта и размера текста. Он сбой, когда по какой-то причине я запускаю настройку цвета текста. – EzioBahin

+0

logcat? не уверен, что это такое, я новичок в студии Android. – EzioBahin

ответ

0

По входу кошачьего образа у вас есть IllegalArgumentException исключения

У вас есть цвет строка, которая не находится в правильном формате увидеть этот Color.parseColor

Разберите цветную строку и верните соответствующий цвет-int. Если строка не может быть проанализирована, выбрасывается исключение IllegalArgumentException. Поддерживаемые форматы: #RRGGBB #AARRGGBB или одно из следующих : «красный», «синий», «зеленый», «черный», «белый», «серый», «голубой», «пурпурный», «желтый», «lightgray», «darkgray», «серый», «lightgrey», «darkgrey», «aqua», «fuchsia», «lime», «maroon», «navy», «olive», «фиолетовый», «серебро», «чирок».

Изменить

String s3 = sharedPreferences.getString("font_color", "#000"); 

в

String s3 = sharedPreferences.getString("font_color", "#000000"); 
+0

Проголосуйте также, это указывает, что ответ был полезен –

0
String s3 = sharedPreferences.getString("font_color", "#000000"); 

Это было бы правильно. Другое использование Color.NAME_OF_COLOR, много здесь.

0

В Android Вам необходимо указать либо 6, либо 8 HexaColor. Поскольку он поддерживает RGB или ARGB. каждые два символа определяют значение цвета один раз при создании окончательного цвета. как: - # 112233

11 define Red color with value 17 from (0 to 255 range) 

22 define Green color with value 34 from (0 to 255 range) 

33 define Blue color with value 51 from (0 to 255 range) 

То же, если у вас есть альфа, чем определить первые две цифры с альфа-значение: - Как с 50% непрозрачности же выше цвет HexaValue будет: - # 80112233

where 80 is 128 alpha value from (0 to 255 range) 

Так правильное решение для вашей проблемы будет: -

String s3 = sharedPreferences.getString("font_color", "#000000"); 

вместо

String s3 = sharedPreferences.getString("font_color", "#000");