Android Actionar overflow 不显示的问题

本文探讨了Android设备上Action Bar的Overflow菜单不显示的问题,主要针对拥有实体Menu按键的设备。提供了两种解决方案:一是通过反射修改系统设置;二是通过XML布局文件强制显示。并分析了这两种方法的优势与不足。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在此直接引用网上的一篇文章 : 

Android action bar not showing overflow


总结一下为什么overflow 不显示的原因就是因为你的设备有实体的menu 键(自从4.4以后好像很多手机原来的实体menu键不再是menu的功能了,所以不存在这问题),所以如果要想显示overflow 有几种方式

·1: 通过反射 在Activity 的OnCreate 中调用,其目的是让"sHasParmanenMenuKey" = false。不过好像在 Android action bar not showing overflow 文章中有人说道在某个平台版本上无效,而且这篇文章不建议使用这种方法,起原因是 “This is an awful hack that breaks consistency with the rest of the apps on the platform. Do not do this”就是说这样破坏了其他应用在这个平台使用的一致性,其实对中国来说貌似有没什么公司或者个人会遵循google的设计,都是抄,再抄,所以也无所谓。

private void makeActionOverflowMenuShown() {
    //devices with hardware menu button (e.g. Samsung Note) don't show action overflow menu
    try {
        ViewConfiguration config = ViewConfiguration.get(this);
        Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
        if (menuKeyField != null) {
            menuKeyField.setAccessible(true);
            menuKeyField.setBoolean(config, false);
        }
    } catch (Exception e) {
        Log.d(TAG, e.getLocalizedMessage());
    }
}
· 第二种 :

<item
    android:id="@+id/a_More"
    android:icon="@drawable/more"
    android:showAsAction="always"
    android:title="More">
    <menu>
        <item
            android:id="@+id/aM_Home"
            android:icon="@drawable/home"
            android:title="Home"/>
    </menu>
</item>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮克桃在写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值