![](/img/trans.png)
[英]ActionBarCompat - showAsAction=“always|withText” not working
[英]Items in ActionBarCompat are showed always in Overflow
我在我的應用程序中使用ActionBarCompat,我想在操作欄中顯示一個或兩個項目
我接下來是google開發人員的指南,但是當我測試它時,項目會顯示在“Overflow”選項中(在Nexus 4中),如果存在則點擊菜單按鈕(例如Galaxy S3)
我做錯了什么?
找到解決方案
你可以在答案中找到它。
我遇到了同樣的問題,並找到了兩個解決方案:
在菜單xml(Login.xml)中,使用showAsAction標記的app名稱:
代替:
<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);
我認為您需要為這些操作提供圖標,以便它們可以顯示在操作欄中。
<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>
問題已更新,包括答案,但對於對官方文檔感興趣的任何人,請參閱http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems並特別注意注釋關於為showAsAction
屬性使用自定義命名空間。
<item
android:id="@+id/ok"
android:icon="@drawable/ic_ok"
android:orderInCategory="0"
android:showAsAction="ifRoom"
android:title="OK"/>
我們有兩種方法可以解決這個問題。
或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>
在AppCompat-v21和API級別21及更高級別的新Material Design概念中,Android工具欄也是如此。
我找到了解決方案,所以我發布了答案:
找到解決方案
在菜單的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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.