我遇到了与此处所述相同的问题 - Setting a custom share icon on Actionbar ShareActionProvider
但我没有使用 ActionBarSherlock
我发现 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;
}
}
关于android - 在没有 ActionBarSherlock 的情况下在 Actionbar ShareActionProvider 上设置自定义共享图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21377816/