【问题标题】:Hide the share action icon near the share action provider WITHOUT ActionBarSherlock隐藏分享操作提供程序附近的分享操作图标 WITHOUT ActionBarSherlock
【发布时间】:2013-07-29 17:54:07
【问题描述】:

我对 Android 开发很陌生,我正在尝试使用“stock”ActionBar(即使用 ActionBarSherlock)通过 ShareActionProvider 构建一个 ActionBar ,因为我只想针对 ICS+ 设备。

我希望启用历史记录功能(默认情况下),但我不希望分享按钮附​​近最常用的意图图标,因为它占用太多空间。
我知道使用 ActionBarSherlock 这是可能的,但正如我所说,我正在尝试使用股票 ActionBar 来做到这一点,所以我想知道如何克服这个问题。

我找到了这两个相关的答案:
How to hide the share action (which use most) icon near the share action provider?
Android: ShareActionProvider with no history

但他们都没有明确说明如何编辑 Android 源以拥有隐藏图标的 ActionBar 的另一个“版本”。
我的意思是,如何将这两个答案结合起来,并将我的应用程序与隐藏最常用图标的修改后的 ActionBar 类一起发布?

编辑:
我正在寻找一个简短的操作列表,以扩展三个类 ShareActionProviderActivityChooserViewActivityChooserMode 以构建修改后的它们的版本不会在 Eclipse 中引发错误。 AFAIK 这在网络上的其他地方没有记录(谷歌没有给出结果)。

【问题讨论】:

    标签: android android-actionbar shareactionprovider


    【解决方案1】:

    但他们都没有明确说明如何编辑 Android 源以拥有隐藏图标的 ActionBar 的另一个“版本”。

    那是因为您没有更改操作栏。您更改ShareActionProvider。如果您不喜欢 ShareActionProvider 的现有实现,请创建自己的实现,或许可以使用现有实现作为起点。

    例如,Android: ShareActionProvider with no history 问题上的the accepted answer 就是这样描述的。问题和答案都没有引用 ActionBarSherlock。

    【讨论】:

    • 是的,你是对的,但我一直在寻找的是关于如何“通过复制 Android 源代码中找到的内容并复制 ActivityChooserView 和 ActivityChooserModel 来编写我自己的 ShareActionProvider”的解释来源”。我无法在网上找到任何关于此的示例,并且尝试简单地从 android Sources here 复制文件会在 Eclipse 中产生很多错误。
    • @virtualdj:“大量错误”主要来自对内部资源的引用(来自com.android.internal.R 的那些)。您需要为这些资源创建自己的替代品,然后修复 R 引用。否则,与使用ShareActionProvider 相比,使用启动选择器对话框的简单“共享”操作栏项目可能会更好。我怀疑您是否会找到有关更改 ShareActionProvider 的分步说明。
    • 复制和粘贴@steemcb post 上的 3 个完整文件就足以让我理解,我想。不幸的是,我无法评论该答案以询问完整文件,因为我没有足够的 SE 声誉:-(
    • 嗨,我仍在努力解决这个问题。我已经从 ShareActionProvider.java 更改了包并导入了资源,但是如何解决 “OnChooseActivityListener 无法解析为类型” 错误?我也尝试复制 ActivityChooserModel.java,但随后我得到 "PackageMonitor cannot be resolve to a type" 那里(在“import com.android.internal .content.PackageMonitor;" 和几个使用该导入的后续)。你有什么线索吗?
    • @virtualdj: OnChooseActivityListenerActivityChooserModel 中的三行代码(不包括 cmets)。假设您不需要 ActivityChooserModel 的其余部分,请将这三行复制到项目中的文件中并修复导入以引用您的副本。
    【解决方案2】:
    1. 将源文件 ActivityChooserView.java 和 ShareActionProvider.java 文件从 https://android.googlesource.com/platform/frameworks/support.git 复制到您的项目中。
    2. 在 Eclipse 上对两个文件执行 Ctrl+Shift+O 以修复任何导入。在 ShareActionProvider.java 中,将 ActivityChooserView.java 的导入更改为新文件。
    3. 将您实施 onCreateOptionsMenu() 的文件中的 import ShareActionProvider 更改为您复制此文件的位置。
    4. 在 menu.xml 中,将 ShareActionProvider 类更正为新的。
    5. 在 ActivityChooserView.java 中查找 if(activityCount==1 || activityCount > 1 && historySize > 0)。将其更改为 if(false)

    一切就绪!

    【讨论】:

    • 感谢您的回答,但我认为它并不完整。首先,我还需要从您提供的链接中复制 ActivityChooserModel.java(谢谢!)。那么,最重要的是,如何修复R.styleable.ActivityChooserView等R错误(error "abc_activity_chooser_view cannot be resolve or is not a field")?
    • 对不起,我是瞎子,没有看support.git上res目录下的文件。但是,在复制所有文件后,我仍然遇到问题,因为源使用 ActionBarCompat 而我没有在应用程序上使用支持库(我在 ICS+ 上)。我会尽力管理它...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多