Android ActionBar не будет разделен на устройство

Я знаю, что было много вопросов ActionBar, но они, похоже, не затрагивают мою проблему. Я могу плюнуть в ActionBar в эмулятор, но когда я запускаю свою программу на своем устройстве (режим портретной ориентации Nexus 7), ActionBar не будет разделяться. Все значки «накапливаются» вверху, даже мои вкладки создают раскрывающийся список. Я попытался заставить проблему, сделав имена пунктов меню очень длинными, и у меня есть их: android: showAsAction = "always | withText". Чтобы быть уверенным, я взял пример кода, запустил его на эмуляторе, увидев, что он работает, а затем положил его на мое устройство безрезультатно. Вот мой манифест:

<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> 

Я просмотрел веб-страницы, но не могу найти решение. Любая помощь приветствуется.

Согласно этому элементу SO , ActionBar разделяется только тогда, когда доступная ширина меньше 480dp. Согласно этой статье Google Dianne Hackborn, ширина портрета Nexus 7 составляет 600dp. Вот почему нет расщепления.

Я согласен с вами в том, что расщепление должно зависеть от соотношения между доступным пространством и отображаемыми элементами, а не только доступным пространством.

Я знаю, что этот вопрос довольно старый, но я нашел способ заставить панель действий к betom на Nexus 7 (и, возможно, другие устройства), и я решил поделиться своим решением:

Разместите этот код в своей деятельности:

 /** * {@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. Возможно, это не лучший способ сделать это, но, похоже, это единственный способ, которым я нашел.