gpt4 book ai didi

Android ActionBar 兼容溢出菜单未在 sdk 10 上显示

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:37:41 24 4
gpt4 key购买 nike

您好,感谢您花时间阅读这个问题。

我正在尝试开发一个将使用 ActionBar 兼容库的 Android 应用程序。在使用 compat 库时,我已经遵循(据我所知)所有建议。我的 list 看起来像这样(只显示相关代码):

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light" >

</application>

</manifest>

如您所见,我的目标是 sdk 8+。我已经按照推荐使用了 Theme.AppCompat 主题。

我的菜单文件是这样的:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cds="http://schemas.android.com/apk/res-auto" >

<item
android:id="@+id/action_map"
android:icon="@drawable/ic_action_map"
android:title="@string/action_map"
cds:showAsAction="ifRoom"/>
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
cds:showAsAction="ifRoom"/>
<item
android:id="@+id/action_mail"
android:icon="@drawable/ic_action_mail"
android:title="@string/action_mail"
cds:showAsAction="ifRoom"/>

</menu>

我正在为 showAsAction 属性使用我自己的命名空间。

我的 Activity 扩展了 ActionBarActivity 类。

问题是这样的:在 sdk 10 (android 2.3.3) 上,在设备和模拟器上,溢出菜单(操作栏右侧的三个点)都没有显示。操作栏上仅显示前 2 个菜单项。如果我按下设备上的“菜单”按钮,那么第三个项目将从屏幕的左下角显示(而不是从右上角显示在具有更新的 android 版本的设备上)。相同的代码在模拟器上的 android sdk 17 上运行良好(溢出菜单显示正确的操作)。

我已经在网上搜索了解决方案,但找不到针对这个特定问题的解决方案。如果我没有在 android 2.3.3 设备上安装具有相同操作栏并显示溢出菜单图标并且像在任何最近的 android 设备上一样正常工作的应用程序,我会放弃这个问题。此应用程序的一个示例是 todoist 应用程序 ( https://en.todoist.com/android ) 或 handcent 应用程序 ( https://play.google.com/store/apps/details?id=com.handcent.nextsms&hl=en ),它们在此设备上均运行良好。

有什么我遗漏的吗?或者是否有推荐的使用操作栏兼容方式的替代解决方案?

感谢您的宝贵时间。

最佳答案

@Andrei Google 已经在 pre honycomb 的 appcompat 中禁用了菜单溢出按钮。如果您真的想添加它,请转到 android 的 github 存储库并下载platform_frameworks_support。它在 platform_framework_support_master/v7/appcompat 中包含 appcompat 的源代码。

在 appcompat 中创建一个 libs 文件夹并放入最新的 android-support-v4.jar。现在打开文件 v7/appcompat/src/android/support/v7/internal/view/ActionBarPolicy.java。您会看到 showOverflowMenuButton 对于 pre honycomb 返回 false。只需返回 true 并将此编辑的 appcompat 作为库添加到您的项目而且您不需要任何自定义溢出按钮这对我有用。对不起我的英语

编辑:来自 android/support/v7/internal/view/ActionBarPolicy.java 的实际代码

public boolean showsOverflowMenuButton() {
// Only show overflow on HC+ devices
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
}

关于Android ActionBar 兼容溢出菜单未在 sdk 10 上显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com