簡體   English   中英

Android appcompat操作欄菜單項showAsAction無效

[英]Android appcompat actionbar menu item showAsAction not working

我有一個菜單項在android 4.x上顯示但不在2.x上顯示。 這是我的menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
    android:id="@+id/menu_filter"
    android:title="Filter"
    app:showAsAction="always"/>  
</menu>

這是我的動作欄樣式

<style name="style1_actionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="android:background">@color/blue_dark</item>
    <item name="android:textColor">@color/white</item>
    <item name="actionMenuTextAppearance">@color/white</item>
    <item name="background">@color/blue_dark</item>
</style>

有任何想法嗎?

編輯:刪除雙引號拼寫錯誤

可能是因為我只顯示文字,沒有圖標嗎? 我有點被困在這里。

哎呀,謝謝你的幫助,但我設法搞清楚了。 它不是xml的問題,它是onCreateOptionsMenu函數的一個問題。

我正在使用它

new MenuInflater(getApplication()).inflate(R.menu.activity_wentry_editor, menu); 

而不是這個

MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_wentry_editor, menu);

不完全確定為什么會這樣,但確實如此。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  **xmlns:yourapp="http://schemas.android.com/apk/res-auto"** >

    <item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      **yourapp**:showAsAction="ifRoom"  />
</menu>

請參閱文檔。 http://developer.android.com/guide/topics/ui/actionbar.html

使用支持庫中的XML屬性

請注意,上面的showAsAction屬性使用標記中定義的自定義命名空間。 在使用支持庫定義的任何XML屬性時,這是必需的,因為舊設備上的Android框架中不存在這些屬性。 因此,您必須使用自己的命名空間作為支持庫定義的所有屬性的前綴。

在我的情況下,我不得不在onCreateOptionsMenu上添加幾行。

在使用appCompat時,Android Studio沒有讓我使用android:showAsAction =“ifRoom”。

app:showAsAction =“ifRoom”無法正常工作,我將其刪除沒有問題。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater  inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        for (int i = 0; i < menu.size(); i++) {
            menu.getItem(i).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
        }
        return super.onCreateOptionsMenu(menu);
    }

如果您希望您的應用支持低於3.0的操作欄,則需要使用支持庫中的app compact v7。

另請查看鏈接

使用擴展AppCompact的活動中的菜單,必須在XML中導入應用程序上下文並使用它:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <!-- "Mark Favorite", should appear as action button if possible -->
    <item
        android:id="@+id/action_favorite"
        android:icon="@drawable/ic_favorite_black_48dp"
        android:title="@string/action_favorite"
        app:showAsAction="ifRoom"/>

    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          app:showAsAction="never"/>

</menu>

您需要做的基本上是將xmlns:app="http://schemas.android.com/apk/res-auto"到yout XML中的menu元素中,並使用以下格式的showAsActionapp:showAsAction="ifRoom"

如果可能,這將在操作欄中顯示圖標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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