簡體   English   中英

ActionBarCompat中的項目始終顯示在溢出中

[英]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"/>

我們有兩種方法可以解決這個問題。

  1. 你需要添加libs“ActionBarSherlock”。這是ActionbarSherlock的用法。

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM