Я не могу видеть переполнение меню на панели действий, почему?
Я использую ActionBar в Android, но он не показывает переполнение панели. Я пытаюсь как учебник, но он не работает, хотя я сделал то же самое, что не так? Я просто хочу, чтобы домой отображать, а другие на переполнение. Вот код меню, использующий панель действий в Android, но он не показывает переполнение. Я пытаюсь как учебник, но это не работает, хотя я сделал то же самое, что не так? Я просто хочу, чтобы домой отображать, а другие на переполнение. Вот код меню
<item android:id="@+id/Homebar"
android:title="Home"
android:orderInCategory="1"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/infobar"
android:title="Info"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/servicebar"
android:title="Services"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/onlinetoolsbar"
android:title="Online tools"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/mediacenterbar"
android:title="Media center"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
4 ответа
Вы, вероятно, используете устройство с выделенной кнопкой меню или эмулятор с выделенной кнопкой меню. До Android 4.4 Android не отображал кнопку переполнения, если на устройствах есть специальная кнопка меню. Если вы нажмете кнопку меню, появится меню переполнения.
Google изменил это поведение в Android 4.4 Kitkat, и теперь на всех устройствах будет отображаться кнопка переполнения. Если вы используете эмулятор, попробуйте протестировать на эмуляторе Android 4.4. Если вы тестируете на реальном устройстве с выделенной кнопкой меню, используйте эту кнопку для вызова меню переполнения.
РЕДАКТИРОВАТЬ: Чтобы получить пользовательское меню подменю / переполнения, вы должны создать отдельное меню внутри элемента меню. Как это:
<item android:id="@+id/Homebar"
android:title="Home"
android:orderInCategory="1"
android:showAsAction="ifRoom"
>
<menu>
<item android:id="@+id/infobar"
android:title="Info"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/servicebar"
android:title="Services"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/onlinetoolsbar"
android:title="Online tools"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/mediacenterbar"
android:title="Media center"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
</menu>
</item>
Я надеюсь, что приведенный ниже код полезен для большинства устройств для отображения панели действий с меню переполнения и использует:
Этот ниже способ легко показать меню переполнения Action Bar в большинстве устройств, которые вы можете использовать> версии 3.0.
Я проверил, что этот код работает правильно в версиях Android 4.0, 4.1, 4.2, 4.3.
MainActivity.java
package com.example.actionbaroverflowmenu;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.WindowManager;
public class MainActivity extends Activity {
private Menu mainMenu;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.main, menu);
mainMenu = menu;
return true;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch (keyCode) {
case KeyEvent.KEYCODE_MENU:
mainMenu.performIdentifierAction(R.id.action_overflow, 0);
return true;
}
}
return super.onKeyDown(keyCode, event);
}
}
Меню /main.xml
<item
android:id="@+id/action_locate"
android:icon="@drawable/ic_action_locate"
android:orderInCategory="200"
android:showAsAction="always"/>
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:orderInCategory="300"
android:showAsAction="always"/>
<item
android:id="@+id/action_overflow"
android:icon="@drawable/ic_action_overflow"
android:menuCategory="container"
android:orderInCategory="400"
android:showAsAction="always"
android:visible="true">
<menu>
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:menuCategory="container"
android:orderInCategory="100"
android:showAsAction="always"
android:title="Refresh"
android:visible="true"/>
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:menuCategory="container"
android:orderInCategory="200"
android:showAsAction="always"
android:title="Search"
android:visible="true"/>
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_action_settings"
android:orderInCategory="300"
android:showAsAction="always"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_help"
android:icon="@drawable/ic_action_help"
android:orderInCategory="400"
android:showAsAction="always"
android:title="Help"/>
<item
android:id="@+id/action_about"
android:icon="@drawable/ic_action_about"
android:orderInCategory="500"
android:showAsAction="always"
android:title="About"/>
</menu>
</item>
Скачать пакет значков панели действий. Ссылки: Скачать пакет значков.
Вы должны поместить иконки в папку drawable для использования в файле menu/main.xml
Прочитайте это из документа:
Переполнение действий
Переполнение действия на панели действий обеспечивает доступ к менее часто используемым действиям вашего приложения. Значок переполнения появляется ТОЛЬКО на телефонах без аппаратных клавиш меню. Телефоны с клавишами меню отображают переполнение действия, когда пользователь нажимает клавишу.`
Так что это не странное поведение вашего приложения, это нормальное поведение Android, в зависимости от того, что вы положили в showAsAction
приписывать menu.xml
, Это зависит также от размера экрана и ориентации.
Кстати, некоторые люди используют хак, чтобы вызвать отображение меню переполнения, но, как я уже сказал, это хак, поэтому он не подходит для вашего приложения и приведет к возможным ошибкам в других устройствах / версиях. Посмотрите здесь, чтобы лучше понять.
Если вы действительно хотите, чтобы это было в вашем приложении без использования хака, проверьте это решение.
В меню переполнения отображаются только те элементы, для которых для android:showAsAction установлено значение "never". Вы установили его на "ifRoom" для каждого элемента.