android - HTC One X 上隐藏了部分选项菜单

标签 android menu htc-android

我正在开发天气应用程序,但在使用某些智能手机显示选项菜单时遇到问题。我想显示一个有 3 个选项的菜单,但是在 HTC one X 上,只显示了 2 个选项。

问题是屏幕底部的黑条隐藏了我菜单的第三个选项。

这是问题的屏幕截图:(我们应该看到“Recharger”、“Voir cette image”和最后一个选项:“Autres cartes”)

enter image description here

代码:

    public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0,100,0,m_res.getStringArray(R.array.menu_reload)[Commons.currentLanguage]).setIcon(R.drawable.reload); 
    menu.add(0,101,0,m_res.getStringArray(R.array.menu_view_single)[Commons.currentLanguage]).setIcon(R.drawable.see); 
    if(m_model.getUrl2().size() !=0)
        menu.add(0,102,0,m_res.getStringArray(R.array.menu_more)[Commons.currentLanguage]).setIcon(R.drawable.more); 
    SubMenu moreMaps = menu.addSubMenu(0,103,0,m_res.getStringArray(R.array.menu_others_maps)[Commons.currentLanguage]).setIcon(R.drawable.france); 
    if(m_time == 1)
    {
        for(int iBoucle = 0 ; iBoucle < m_model.getNames1().size() ; iBoucle++)
            moreMaps.add(1,iBoucle,1,m_model.getNames1().get(iBoucle));
    }
    else
    {
        for(int iBoucle = 0 ; iBoucle < m_model.getNames2().size() ; iBoucle++)
            moreMaps.add(1,iBoucle,1,m_model.getNames2().get(iBoucle));
    }
    onContextItemSelected(moreMaps.getItem());
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case 100:
        if(Commons.getNetworkState() || Commons.getWifiState())
        {
            eraseData();
            loadingData();
        }
        else
            Commons.getConnectivityErrorMessage(m_Context);
        return true;
    case 101:
        Intent sia  = new Intent(m_Context, SingleImageActivity.class);
        sia.putExtra("url", correctURL(m_urlImages.get(m_step)));
        sia.putExtra("choiceNumber", -1);
        if(m_textIsHour)
        {
            if(m_time == 1)
                sia.putExtra("title", m_model.getNames1().get(m_mode)+" - "+m_model.getHours1().get(m_step)+"h");
            else
                sia.putExtra("title", m_model.getNames2().get(m_mode)+" - "+m_model.getHours2().get(m_step)+"h");
        }
        startActivity(sia);
        break;
    case 102:
        if(Commons.getNetworkState() || Commons.getWifiState())
        {
            Intent modelSubList = new Intent(m_Context, ModelViewActivity.class);
            modelSubList.putExtra("model",m_modelNumber);
            modelSubList.putExtra("mode",m_mode);
            if(m_time == 1)
                modelSubList.putExtra("time",2);

            else
                modelSubList.putExtra("time",1);
            startActivity(modelSubList);
            finish();
        }
        else
        {                   
            Commons.getConnectivityErrorMessage(m_Context);
        }
        break;
    case 103:
        break;
    default:
        if(Commons.getNetworkState() || Commons.getWifiState())
        {
            Intent otherMapsIntent  = new Intent(m_Context, ModelViewActivity.class);
            otherMapsIntent.putExtra("model",m_modelNumber);
            otherMapsIntent.putExtra("mode",item.getItemId());
            otherMapsIntent.putExtra("time",m_time);
            startActivity(otherMapsIntent);
            finish();
            return true;
        }
        else
        {                   
            Commons.getConnectivityErrorMessage(m_Context);
            return false;
        }

    }

    return false;
}

最佳答案

这段代码在我这里的美国和欧洲 One X 手机上显示了三个菜单选项: https://github.com/lnanek/Misc/tree/master/OneXFullscreenMenuTest

你能在你的设备上试试吗?如果它不起作用,那么我们知道它是您设备上的软件。如果它确实有效,那么它可能与您的代码有关。

你能发布更多关于你的情况吗?我对如何打开全屏和 AndroidManifest.xml(例如 uses-sdk 行和主题设置)的代码特别感兴趣。

我在您发布的代码中没有立即看到任何错误,但是您可以注释掉这一行以便快速检查吗?
如果(m_model.getUrl2().size() !=0)

如果检查没有通过,那么应该只有两个菜单项,而不是三个。因此,将其注释掉将是一个快速检查(当然,或者在调试器中观察是否所有三个添加都被调用)。

请注意 onCreateOptionsMenu 仅在 Activity 实例第一次显示选项菜单时调用,而不是每次调用的 onPrepareOptionsMenu。因此,如果第一次没有添加第三个菜单选项,那么它永远不会。

关于android - HTC One X 上隐藏了部分选项菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968776/

相关文章:

android - 如果我在操作栏中隐藏图标或应用程序名称,为什么栏会改变它们的位置

htc one m8 上的 android 通话录音

java - 同步:ImageDownloader线程

Android如何获取设备显示颜色

java - 使用类在 Java 中存储静态数据?

c++ - 菜单驱动逻辑错误导致死循环

android - 如何在 android 中为应用程序创建通用菜单

android - HTC One 漏洞?出现在 URLConnection InputStream 中的部分 HTTP header

android - HTC 设备上的联系人应用程序设置中未显示帐户

java - 无法在屏幕旋转时保留菜单项