android - 在没有 ActionBarSherlock 的情况下在 Actionbar ShareActionProvider 上设置自定义共享图标

标签 android android-actionbar android-xml android-icons android-actionmode

我遇到了与此处所述相同的问题 - 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/

相关文章:

java - Android:仅从父 Activity 调用子 Activity 的函数

android - 用户 10102 和当前进程都没有 android.permission.READ_PHONE_STATE

android - 删除自定义操作栏中的额外空间

android - 如何更改 SearchView 默认图标?

java - Android - 使用两个 xml 文件显示单个 Activity

安卓。设置ListView的背景图片

android - 对我的所有 Activity 使用固定 View

android - dot42:为原始资源(mp3 文件)调用 SoundPool.Load 方法时抛出异常

java - Android 4.0/ICS - 操作栏上的应用程序图标不可点击

Android 创建带有图像圆顶角的 Drawable XML