2014-02-04 3 views
2

Я создаю панель действий в своем коде с помощью библиотеки поддержки. Затем я создаю значок переполнения в панели действий в своем коде. Когда я запускаю приложение, его значок переполнения отображается, но когда я запускаю свое устройство, оно становится невидимым. Из некоторых ссылок я обнаружил, что причиной этого является наличие на моем устройстве меню button. Это правда? И как показать значок переполнения на каждом устройстве?Значок переполнения в строке действия невидимый

код-

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:yourapp="http://schemas.android.com/apk/res-auto" > 
    <!-- Search, should appear as action button --> 
    <item 
     android:id="@+id/menu_1" 
     android:orderInCategory="1" 
     yourapp:showAsAction="never" 
     android:title="@string/share"/> 
    <item 
     android:id="@+id/menu_2" 
     android:orderInCategory="2" 
     yourapp:showAsAction="never" 
     android:title="@string/contact"/> 
    <item 
     android:id="@+id/menu_3" 
     android:orderInCategory="3" 
     yourapp:showAsAction="never" 
     android:title="@string/contact1"/> 

</menu> 
+0

Набор 'showAsAction' как' андроида: showAsAction = "всегда" '. Ваш элемент, который раздувает ваше меню переполнения, ДОЛЖЕН показатьAsAction = "always –

+0

Но я не хочу делать над видимыми элементами в панели действий. Я хочу, чтобы эти элементы переполнялись. –

ответ

0

Да, если устройство оказывает кнопку меню, значок переполнения не будет отображаться.

Вы можете использовать это обходное решение. Независимо от того, какое устройство вы используете, значок отображается всегда. Тем не менее, это не рекомендуется для использования. Оставьте это так, как это делается по умолчанию.

try { 
     ViewConfiguration config = ViewConfiguration.get(this); 
     Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); 
     if(menuKeyField != null) { 
      menuKeyField.setAccessible(true); 
      menuKeyField.setBoolean(config, false); 
     } 
    } catch (Exception ex) { 
     // Ignore 
    } 
+0

где добавить этот код? –

+0

Предпочтительно в конце' onCreate' метод – JoelFernandes

+0

Этот код работает с библиотекой поддержки Android и на всех устройствах –

1

Попробуйте сделать свой menu.xml, как показано ниже:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<!-- Search/will display always --> 
<item 
    android:id="@+id/action_search" 
    android:icon="@drawable/ic_action_search" 
    android:showAsAction="always" 
    android:title="@string/action_search"/> 
<!-- Overflow More --> 
<item 
    android:id="@+id/a_More" 
    android:icon="@drawable/ic_action_overflow" 
    android:showAsAction="always" 
    android:title="More"> 

    <menu> 

<item 
    android:id="@+id/menu_1" 
    android:orderInCategory="1" 
    yourapp:showAsAction="never" 
    android:title="@string/share"/> 

<item 
    android:id="@+id/menu_2" 
    android:orderInCategory="2" 
    yourapp:showAsAction="never" 
    android:title="@string/contact"/> 

<item 
    android:id="@+id/menu_3" 
    android:orderInCategory="3" 
    yourapp:showAsAction="never" 
    android:title="@string/contact1"/> 
    </menu> 
</item> 

</menu> 
Смежные вопросы