2012-11-28 30 views
6

我知道有很多ActionBar的问题,但他们似乎并没有解决我的问题。我能够在我的模拟器中吐出ActionBar,但是当我在我的设备上运行我的程序时(Nexus 7肖像模式),ActionBar将不会拆分。所有的图标堆积在上面,甚至我的标签都会创建一个下拉列表。我试图通过使菜单项名称非常长来强制解决问题,我确实将它们设置为:android:showAsAction =“always | withText”。可以肯定的是,我已经拿到了示例代码,在模拟器上运行它,然后将其放在我的设备上无用。这里是我的清单:Android的ActionBar不会拆分设备

<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/MyTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:uiOptions="splitActionBarWhenNarrow" 
     android:label="@string/title_activity_main"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

我已经走遍了网络,但无法找到一个解决方案。任何帮助表示赞赏。

+0

我有同样的问题。我在某处看到'splitActionBar'只适用于手机,不适用于平板电脑,但我希望这是一个神话... – Ridcully

回答

7

根据this SO item,只有当可用宽度小于480dp时,ActionBar才会被分割。根据Google的Dianne Hackborn的this article,Nexus 7的纵向宽度为600dp。所以这就是没有分裂的原因。

我同意你的看法,拆分应该取决于可用空间和项目之间的关系,而不是仅仅在可用空间上。

+0

Ridcully,感谢您挖掘它。我只是很惊讶,情况就是如此。 –

7

我知道这个问题是很老,但我已经找到一种方法来强制动作条上的的Nexus 7(以及可能的其他设备)的BUTTOM,我想我会分享我的解决方案:

广场这段代码在你的活动中:

/** 
* {@inheritDoc} 
*/ 
@Override 
public Resources getResources() { 
    return new ResourceFix(super.getResources()); 
} 

private class ResourceFix extends Resources { 
    private int targetId = 0; 

    ResourceFix(Resources resources) { 
     super(resources.getAssets(), resources.getDisplayMetrics(), resources.getConfiguration()); 
     targetId = Resources.getSystem().getIdentifier("split_action_bar_is_narrow", "bool", "android"); 
    } 

    /** 
    * {@inheritDoc} 
    */ 
    @Override 
    public boolean getBoolean(int id) throws Resources.NotFoundException { 
     return targetId == id || super.getBoolean(id); 
    } 
} 

这将强制内部“split_action_bar_is_narrow”的值为true。 这可能不是最好的办法,但它似乎是我找到的唯一途径。

+1

尼斯破解。希望它有一定的知名度。这是一个常见的问题 – dinigo

+0

令人难以置信。做得好! –