web-dev-qa-db-ja.com

スナックバーのアクションテキストの色が変わらない

スナックバーのアクションテキストの色を変更したいのですが、何らかの理由で機能しません。

次のコードを使用して、スナックバーを表示します。

Snackbar.make(findViewById(R.id.root), "text", Snackbar.LENGTH_LONG).setActionTextColor(R.color.yellow).setAction("OK", new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    }
}).show();
35
qwertz

setActionTextColorの引数は、リソースIDではなく、色を表すintです。

これの代わりに:

.setActionTextColor(R.color.yellow)

試してください:

.setActionTextColor(Color.YELLOW)

とにかくリソースを使用したい場合は、試してください:

.setActionTextColor(ContextCompat.getColor(context, R.color.color_name));

注:ContextCompatを使用するには、サポートライブラリがbuild.gradleファイル(appcompat(v7)ライブラリも既にある場合はオプションです)。

64
Anand Singh

つかいます

.setActionTextColor(getResources().getColor(R.color.red))

ただの代わりに

.setActionTextColor(R.color.red)
27
Adam Purser

上記の答えのどれも私を助けませんでした。私はこの解決策を見つけましたが、TextViewのテキスト色を手動で変更することで機能します

Snackbar snack = Snackbar.make(v, "Snackbar message", Snackbar.LENGTH_LONG);
View view = snack.getView();
TextView tv = (TextView) view.findViewById(Android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
snack.show();