奇怪的选项菜单显示在4.3

时间:2013-08-12 22:36:55

标签: android android-layout

我的代码工作正常,因为1.6升级到4.3后突然无法正常显示。

看起来绘制菜单的系统获得了错误的屏幕宽度值。

代码测试的任何想法!我尝试改变主题,我没有想法!

它似乎只影响4.x设备。所有其他设备不受影响。

在onCreate中有必要的: -

if (android.os.Build.VERSION.SDK_INT>10)
     getActionBar();

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
     //super.onCreateOptionsMenu(menu);
     if (!app().day_change){
         menu.add(0,0,0,"<<Day");
         menu.add(0,1,0,"Day>>");
     }
     menu.add(0,2,0,"Hot Sync");
     menu.add(0,3,0,"Delete Week File");
     menu.add(0,4,0,"Import Test Data File");
     menu.add(0,5,0,"View Mod History");
     menu.add(0,15,0,"View Changes to Data");
     menu.add(0,6,0,"Select Bluetooth device");
     menu.add(0,9,0,"View Auto Backup files");
     menu.add(0,10,0,"Options");
     //menu.add(0,7,0,"WIFI Print Test");
     //menu.add(0,8,0,"Delnote Test");
     return super.onCreateOptionsMenu(menu);
    }


    public boolean onPrepareOptionsMenu(Menu menu){
         menu.clear();
         if (!app().day_change){
             menu.add(0,0,0,"<<Day");
             menu.add(0,1,0,"Day>>");
         }
         menu.add(0,2,0,"Hot Sync");
         menu.add(0,3,0,"Delete Week File");
         menu.add(0,4,0,"Import Test Data File");
         menu.add(0,5,0,"View Mod History");
         menu.add(0,15,0,"View Changes to Data");
         menu.add(0,6,0,"Select Bluetooth device");
         menu.add(0,9,0,"View Auto Backup files");
         menu.add(0,10,0,"Options");
         menu.add(0,11,0,"SMS Invoicing");

         subMenu = menu.addSubMenu("Contacts");
         subMenu.add(0, 12, 0, "  Update");
         subMenu.add(0, 13, 0, "  Delete All z");
         menu.add(0,14,0,"Email Steve Weekfile");

         //menu.add(0,7,0,"WIFI Print Test");
         //menu.add(0,8,0,"Delnote Test");
         return super.onPrepareOptionsMenu(menu);
    }

以下是Nexus 7的视图

Option menu http://www.milkroundsoftware.co.uk/device-2013-08-12-094853.png

非常感谢Steve

2 个答案:

答案 0 :(得分:0)

您不需要使用onPrepareOptionsMenu。

相反,如果项目为空,则将项目添加到菜单中,并始终在onCreateOptionsMenu()方法中返回true。

另外,如果您希望在旧设备上处理actionBar,请考虑使用actionBarSherlock

答案 1 :(得分:0)

在Manifest

中结果很简单
<supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:anyDensity="true" />

android:anyDensity设置为false导致(作为副作用)当菜单被渲染时,宽度变量被设置为零,因此屏幕上的结果位置。

感谢您的帮助 - 我应该将此标记为问题吗?