按下时更改Android ShareActionProvider背景色

按下时更改Android ShareActionProvider背景色,android,android-actionbar,Android,Android Actionbar,我的应用程序的原色是某种黄色。动作栏中的ShareActionProvider有一种微调器,按下时显示默认的全息蓝色 为了使动作栏风格连贯一致,我需要让共享按钮背景在按下时变为黄色。如何做到这一点 我使用的是标准操作栏(没有兼容性或sherlock) 那一个不行: shareMenuItem.getActionView().setBackgroundResource(R.drawable.spinner_background_ab_webcamhd_custom_ab); 关于设计ShareA

我的应用程序的原色是某种黄色。动作栏中的ShareActionProvider有一种微调器,按下时显示默认的全息蓝色

为了使动作栏风格连贯一致,我需要让共享按钮背景在按下时变为黄色。如何做到这一点

我使用的是标准操作栏(没有兼容性或sherlock)

那一个不行:

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]查看我的答案:但是在将背景更改为白色后,现在我看不到白色文本。如何更改文本颜色?