我需要AppTheme.colorAccent
为棕色,但我需要Snackbar
动作颜色为蓝色。如何在不更改Snackbar
的情况下从样式更改AppTheme.colorAccent
的操作按钮颜色?
我尝试过此代码,但不起作用:
<style name="TextAppearance.Design.Snackbar" parent="android:TextAppearance" tools:override="true">
<item name="colorAccent">#3097ff</item>
</style>
答案 0 :(得分:1)
使用Material Components Library可以做到。
只需在主题应用中添加 snackbarButtonStyle
属性即可。
<style name="AppTheme" parent="Theme.MaterialComponents.*">
<!-- Style to use for action button within a Snackbar in this theme. -->
<item name="snackbarButtonStyle">@style/snackbar_button</item>
...
</style>
然后定义您的自定义样式:
<style name="snackbar_button" parent="@style/Widget.MaterialComponents.Button.TextButton.Snackbar">
<item name="backgroundTint">@color/secondaryLightColor</item>
<item name="android:textColor">@color/primaryDarkColor</item>
</style>
它需要库的1.1.0版本。
答案 1 :(得分:0)
您可以在colors.xml
中定义颜色,并在snackbar
中使用颜色,如下所示:
val mySnackbar = Snackbar.make(findViewById(R.id.container),"Item added to cart.", Snackbar.LENGTH_SHORT)
mySnackbar.setAction("view cart", View.OnClickListener {/*action to be triggered*/ })
mySnackbar.setActionTextColor(/*color defined*/)
mySnackbar.show()
我在Kotlin中实现了这一点。
答案 2 :(得分:-2)
您使用以下代码设置小吃店的背景颜色和动作文字颜色..
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar snackbar = Snackbar.make(
view,
"Snackbar: floatingActionButton1 (normal) clicked",
Snackbar.LENGTH_LONG);
snackbar.setActionTextColor(Color.RED);
View snackbarView = snackbar.getView();
snackbarView.setBackgroundColor(Color.WHITE);
TextView textView = (TextView) snackbarView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.BLUE);
snackbar.setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(
getApplicationContext(),
"snackbar OK clicked",
Toast.LENGTH_LONG).show();
}
});
snackbar.show();
}
});