按下时更改Android ShareActionProvider背景色
我的应用程序的原色是某种黄色。动作栏中的ShareActionProvider有一种微调器,按下时显示默认的全息蓝色 为了使动作栏风格连贯一致,我需要让共享按钮背景在按下时变为黄色。如何做到这一点 我使用的是标准操作栏(没有兼容性或sherlock) 那一个不行:按下时更改Android ShareActionProvider背景色,android,android-actionbar,Android,Android Actionbar,我的应用程序的原色是某种黄色。动作栏中的ShareActionProvider有一种微调器,按下时显示默认的全息蓝色 为了使动作栏风格连贯一致,我需要让共享按钮背景在按下时变为黄色。如何做到这一点 我使用的是标准操作栏(没有兼容性或sherlock) 那一个不行: shareMenuItem.getActionView().setBackgroundResource(R.drawable.spinner_background_ab_webcamhd_custom_ab); 关于设计ShareA
shareMenuItem.getActionView().setBackgroundResource(R.drawable.spinner_background_ab_webcamhd_custom_ab);
关于设计ShareActionProvider样式的所有问题都没有得到任何答案:(ShareActionProvider不是使用标准操作栏背景吗?如果是,您可以通过覆盖主题中使用的资源来控制它。例如
<style name="AppTheme" parent="android:Theme.Holo.Light">
<item name="android:actionBarItemBackground">@drawable/your_selector</item>
</style>
@可拖动/您的_选择器
有关如何构建XML选择器Drawable的示例,请查看系统使用的示例
更新
如何找到这个自己
SharedActionProvider
的源代码,并检查onCreateActionView()
ActivityChooserView
操作,这是在onCreateActionView()
中创建的视图
ActivityChooserView
的构造函数中膨胀的布局,在本例中是R.layout.activity\u chooser\u view
R.layout.activity\u chooser\u view的源代码,并找到用于按钮的布局,在本例中为@+id/expand\u activities\u按钮
android:background=“?android:attr/actionBarItemBackground”
我将此添加到我的主题中,它起了作用:
<item name="listPopupWindowStyle">@style/Widget.AppCompat.Light.ListPopupWindow</item>
@style/Widget.AppCompat.Light.ListPopupWindow
因此,如果您想定制您需要的颜色,为有相同问题的人创建自己的风格,这对我来说很有用: -在AppTheme中添加:
<item name="listPopupWindowStyle">@style/PopupListStyle</item>
@style/PopupListStyle
-为listpopup创建新样式:
<style name="PopupListStyle" parent="@style/Widget.AppCompat.Light.ListPopupWindow">
<item name="android:popupBackground">@color/list_popup_bg</item>
</style>
@颜色/列表\u弹出\u背景
我希望弹出带有白色背景的白色共享按钮。因此,首先我将主主题中的文本ColorSecondary更改为白色
<style name="MainTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/appprimary</item>
<item name="colorPrimaryDark">@color/appprimaryDark</item>
<item name="colorAccent">@color/appaccent</item>
<item name="android:textColorPrimary">#ffffff</item>
<item name="android:textColorSecondary">#ffffff</item>
<item name="android:textColor">#212121</item>
<item name="listPopupWindowStyle">@style/PopupListStyle</item>
</style>
@颜色/应用程序主
@颜色/应用原色暗
@颜色/应用程序
#ffffff
#ffffff
#212121
@风格/流行风格
然后我为弹出窗口使用了自定义样式,如intips的回答所示:
<style name="PopupListStyle" parent="@style/Widget.AppCompat.Light.ListPopupWindow">
<item name="android:popupBackground">#ffffff</item>
</style>
#ffffff
然后在我的工具栏中设置了以下主题:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:theme="@style/MainTheme">
我的AB操作已经有了正确的背景(我在主题中使用了android:actionBarItemBackground)。所以它并没有那么简单。知道为什么android:actionBarItemBackground属性没有得到正确使用吗?这可能是问题中有用的信息。:-)我很难确定为什么不使用actionBarItemBackground
的原因。我也面临同样的问题。我已经将android:actionBarItemBackground的样式设置为绿色背景(选择器blabla),但它只是忽略了它,并得到了一个带有黑色文本的黑色背景。。。(顺便说一句,我在AppCompat.Light.DarkActionBar上)请在[[1]查看我的答案:但是在将背景更改为白色后,现在我看不到白色文本。如何更改文本颜色?