Элементы в ActionBarCompat всегда отображаются в режиме переполнения
Я использую ActionBarCompat в своем приложении, я хочу показать один или два элемента в панели действий
Я рассказал руководству разработчиков Google, но когда я его тестирую, элементы отображаются в опции "Переполнение" (в Nexus 4), и если я нажимаю кнопку меню, если существуют (например, Galaxy S3)
Что я делаю неправильно?
РЕШЕНИЕ НАЙДЕНО
Вы можете найти его в ответе.
Ответы
Ответ 1
Я нашел решение, поэтому я отправил в качестве ответа:
РЕШЕНИЕ НАЙДЕНО
В xml меню вы должны поместить новое пространство имен, чтобы сделать работу actionbarcompat. Таким образом, есть несколько вариантов, которые нуждаются в этом пробеле вместо "android". Итак, решения следующие:
Меню старого входа:
<item
android:id="@+id/action_register"
android:showAsAction="always"
android:title="@string/login_menu_register"/>
Новое меню входа в систему (решение) (Посмотрите, как выбрано "showAsAction" )
<item
android:id="@+id/action_register"
shudy:showAsAction="always"
android:title="@string/login_menu_register"/>
Login.xml(MENU)
<item
android:id="@+id/action_register"
android:showAsAction="always"
android:title="@string/login_menu_register"/>
<item
android:id="@+id/action_register2"
android:showAsAction="always"
android:title="miau"/>
LoginActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SLog.d(CLASS_NAME + " onCreate()");
setContentView(R.layout.activity_login);
actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
findViews();
buttons();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.login, menu);
return true;
}
манифеста
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light.DarkActionBar" >
<activity
android:name="com.shudy.myworld.LoginActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
![enter image description here]()
![enter image description here]()
Ответ 2
У меня была та же проблема, и я нашел два решения:
В меню xml (Login.xml) используйте имя вашего приложения для тега showAsAction:
вместо:
<item
android:id="@+id/action_register"
android:showAsAction="always"
android:icon="@drawable/some_icon"
android:title="@string/login_menu_register" />
использование:
<item
android:id="@+id/action_register"
yourappname:showAsAction="always"
android:icon="@drawable/some_icon"
android:title="@string/login_menu_register" />
Я предполагаю, что ваше имя приложения теневое.
второе решение для меня, в классе активности, в onCreateOptionsMenu()
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(
getMenuInflater().inflate(R.menu.main, menu);
MenuItem registerMenuItem = menu.findItem(R.id.action_register);
registerMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); // change this in backcompat
return true;
}
если вы используете backCompatibility, измените последнюю строку:
MenuItemCompat.setShowAsAction(registerMenuItem,MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
Ответ 3
Я думаю, вам нужно предоставить значок для этих действий, чтобы они могли отображаться в панели действий.
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:shudy="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_register"
android:showAsAction="always"
android:icon="@drawable/some_icon"
android:title="@string/login_menu_register" />
<item
android:id="@+id/action_register2"
android:showAsAction="always"
android:icon="@drawable/some_icon2"
android:title="miau" />
</menu>
Ответ 4
Вопрос был обновлен, чтобы включить ответ, но для тех, кто заинтересован в официальной документации, см. http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems и оплачивать определенные внимание к примечанию об использовании пользовательского пространства имен для атрибута showAsAction
.
Ответ 5
<item
android:id="@+id/ok"
android:icon="@drawable/ic_ok"
android:orderInCategory="0"
android:showAsAction="ifRoom"
android:title="OK"/>
Ответ 6
У нас есть два способа решить эту проблему.
ИЛИ
2. Вам нужно добавить libs "android-Support-v7". Если вы выбрали этот метод, то вашему menu.xml понадобится следующее:
<?xml version="1.0" encoding="UTF-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:v7="http://schemas.android.com/apk/res-auto" >
<item
android:id="..."
android:icon="..."
android:showAsAction="always"
android:title="..."
v7:showAsAction="always"/>
</menu>
Ответ 7
Это также верно для панели инструментов Android в новых концепциях Material Design в AppCompat-v21 и API уровнях 21 и выше.