我有与此处描述的相同的问题 –
Setting a custom share icon on Actionbar ShareActionProvider
但是我没有使用ActionBarSherlockI发现Sherlock主题使用了“actionModeShareDrawable”,我也可以像这样使用它,如果我不使用ActionBarSherlock
<style name="Theme.MyApp" parent="android:Theme.Holo"> <item name="*android:actionModeShareDrawable">@drawable/icon</item> </style>
这在我的nexus 5上工作正常,但在许多其他设备上都失败了
所以我的问题是,如何在不使用ActionBarSherlock的情况下更改该图标
解决方法
您可以继承ShareActionProvider,仅覆盖构造函数和createActionView().
从这里,您可以从super获取View,将其转换为ActivityChooserView,以便您可以调用
setExpandActivityOverflowButtonDrawable(Drawable)更改图标.
package com.yourpackagename.whatever; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.v7.internal.widget.ActivityChooserView; import android.support.v7.widget.ShareActionProvider; import android.view.View; import com.yourpackagename.R; public class CustomShareActionProvider extends ShareActionProvider { private final Context mContext; public CustomShareActionProvider(Context context) { super(context); mContext = context; } @Override public View onCreateActionView() { ActivityChooserView chooserView = (ActivityChooserView) super.onCreateActionView(); // Set your drawable here Drawable icon = mContext.getResources().getDrawable(R.drawable.ic_action_share); chooserView.setExpandActivityOverflowButtonDrawable(icon); return chooserView; } }