拥有android.support.v7.widget.Toolbar,它的背景颜色会根据不同的情况而改变。 OverflowButton按钮(工具栏右侧的三个垂直点)按下时始终具有相同的背景。
看到一些关于如何静态更改的帖子,如下所述。但真正想要的是根据工具栏的背景颜色动态地进行。
有什么想法吗?
您可以使用以下样式声明更改用于它的图像。
<style name="MyCustomTheme" parent="style/Theme.Holo">
<item name="android:actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
</style>
<style name="MyCustomTheme.OverFlow">
<item name="android:src">@drawable/my_overflow_image</item>
</style>
如果你正在使用ActionBarSherlock,那么这是怎么做的
<style name="MyCustomTheme" parent="style/Theme.Sherlock">
<item name="android:actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
<item name="actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
</style>
<style name="MyCustomTheme.OverFlow">
<item name="android:src">@drawable/my_overflow_image</item>
</style>
答案 0 :(得分:0)
编辑 - 答案应该是: 可以通过在actionOverflowButtonStyle样式中设置部分透明背景来实现,这样就可以混合工具栏的颜色。
一个解决方案可能只是通过使所有工具栏透明来禁用按下状态,但这是不可取的。
另一个发现,但感觉像是一个黑客。 不确定是否有人有更好的方法来访问溢出按钮,因此可以使用适当的drawable动态设置背景。
可以按照以下setupOverflowMenuButton()完成。
public boolean setupOverflowMenuButton (Menu menu, Toolbar toolbar) {
Toolbar t = toolbar;
for(int i = 0; i < t.getChildCount(); i++) {
if(t.getChildAt(i) instanceof ActionMenuView) {
ActionMenuView v = (ActionMenuView)t.getChildAt(i);
for(int j = 0; j < v.getChildCount(); j++) {
if(v.getChildAt(j) instanceof TintImageView) {
TintImageView v1 = (TintImageView)v.getChildAt(j);
v1.setBackgroundResource(R.drawable.overflow_bt_bg_selector);
}
}
}
}
return super.onPrepareOptionsMenu(menu);
}