そこで、デザインサポートライブラリで新しいスナックバーを使い始めましたが、テーマで「android:textColor」を定義すると、スナックバーのテキストの色に適用されることがわかりました。プライマリテキストの色が暗い場合、これは明らかに問題です。
これを回避する方法を知っている人や、テキストに色を付ける方法についてのアドバイスはありますか?
2017年1月の編集:(回答後)
以下に問題を修正するためのカスタムソリューションがいくつかありますが、スナックバーのテーマを設定する正しい方法を提供することはおそらく良いことです。
まず、おそらく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を確実に持続させる確実な方法が必要な場合は、そうしてください)。
また、問題を解決するための同様の、おそらくより高速な回答については、以下の回答を参照してください。
android:textColorPrimary