2016-08-26 4 views
1

Я пытаюсь получить Панели инструментов textColor с помощью этого метода:Как получить цвет текста панели инструментов/ActionBar программно?

private int getToolbarTextColor() { 

    int toolbarTextColor; 
    TypedArray typedArray = getTheme().obtainStyledAttributes(new int[]{R.attr.titleTextColor}); 

    try { 
     toolbarTextColor = typedArray.getColor(0, Color.TRANSPARENT); 
    } catch (UnsupportedOperationException e) { 
     toolbarTextColor = Color.TRANSPARENT; 
    } finally { 
     typedArray.recycle(); 
    } 

    return toolbarTextColor; 
} 

но он возвращает 0. В чем проблема в моем коде? Какой атрибут я должен использовать? Есть ли еще лучше Способ его получить?

ответ

2

Вот метод, который использует отражение для получения титульной панели инструментов цветого TextView в:

@ColorInt public static int getToolbarTitleTextColor(Toolbar toolbar) { 
try { 
    Field f = toolbar.getClass().getDeclaredField("mTitleTextView"); 
    f.setAccessible(true); 
    TextView mTitleTextView = (TextView) f.get(toolbar); 
    if (mTitleTextView != null) { 
    return mTitleTextView.getCurrentTextColor(); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

return 0;} 
+0

Спасибо, но я думаю, что должно быть атрибут, который представляет цвет. –

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