Итак, я начал использовать новую Snackbar в библиотеке поддержки дизайна, но обнаружил, что когда вы определяете "андроид: textColor" в своей теме, это относится к цвету текста закутки. Это, очевидно, проблема, если ваш основной цвет текста темный.
Кто-нибудь знает способ обойти это или посоветуйте, как мне покрасить текст?
EDIT Январь 2017: (пост-ответ)
Несмотря на то, что существуют некоторые специальные решения для устранения проблемы, приведенной ниже, вероятно, полезно обеспечить правильный путь к темам Snackbars.
Во-первых, вы, вероятно, не должны определять android:textColor
в своих темах вообще (если только вы не знаете, в чем смысл темы). Это устанавливает цвет текста в основном для каждого вида, который соединяется с вашей темой. Если вы хотите определить цвета текста в своих представлениях, которые не являются стандартными, используйте android:primaryTextColor
и укажите этот атрибут в своих пользовательских представлениях.
Однако для применения тем к Snackbar
обратитесь к этому руководству по качеству из документа стороннего материала: http://www.materialdoc.com/snackbar/ (Следуйте реализация программной темы, чтобы она не зависела от стиля xml)
Для справки:
// create instance
Snackbar snackbar = Snackbar.make(view, text, duration);
// set action button color
snackbar.setActionTextColor(getResources().getColor(R.color.indigo));
// get snackbar view
View snackbarView = snackbar.getView();
// change snackbar text color
int snackbarTextId = android.support.design.R.id.snackbar_text;
TextView textView = (TextView)snackbarView.findViewById(snackbarTextId);
textView.setTextColor(getResources().getColor(R.color.indigo));
// change snackbar background
snackbarView.setBackgroundColor(Color.MAGENTA);
(Вы также можете создать свои собственные макеты Snackbar
, см. ссылку выше. Сделайте так, если этот метод слишком взломан, и вы хотите получить надежный способ обновить свой пользовательский Snackbar с помощью возможных обновлений библиотеки поддержки).
И, альтернативно, см. ответы ниже для получения похожих и, возможно, более быстрых ответов для решения вашей проблемы.