簡體   English   中英

操作欄不顯示操作視圖圖標

[英]Action Bar not showing action view icons

我正在使用新的Action Bar支持,我的所有操作視圖都顯示在溢出中,而不是欄中的圖標。 我的應用程序適用於7+ API。

HomeActivity:

public class HomeActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ActionBar actionBar = getSupportActionBar();
        actionBar.setTitle(R.string.app_name);
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeButtonEnabled(true);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.home, menu);
        return true;
    }
}

home.xml

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>
<item
    android:id="@+id/action_browse"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/title_activity_browse"/>
<item
    android:id="@+id/action_search"
    android:actionViewClass="android.widget.SearchView"
    android:icon="@android:drawable/ic_menu_search"
    android:showAsAction="ifRoom|collapseActionView"
    android:title="@string/text_search"/>
<item
    android:id="@+id/action_scan"
    android:icon="@drawable/action_scan"
    android:showAsAction="always"
    android:title="@string/title_activity_browse"/>

我在4.3上使用Nexus 7,在2.3.3上使用LGP500,沒有圖標。 我還在清單上添加了android:theme =“@ style / Theme.AppCompat.Light.DarkActionBar”,我的項目正確引用了官方文檔中描述的android-support-v7-appcompat。

您必須使用支持庫的屬性定義menu資源文件。

要實現后端支持,它會讀取它們而不是舊版Android中定義的內容。

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

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    yourapp:showAsAction="never"
    android:title="@string/action_settings"/>
<item
    android:id="@+id/action_browse"
    android:orderInCategory="100"
    android:showAsAction="never"
    yourapp:showAsAction="never"
    android:title="@string/title_activity_browse"/>
<item
    android:id="@+id/action_search"
    android:actionViewClass="android.support.v7.widget.SearchView"
    android:icon="@android:drawable/ic_menu_search"
    android:showAsAction="ifRoom|collapseActionView"
    yourapp:showAsAction="ifRoom|collapseActionView"
    yourapp:actionViewClass="android.support.v7.widget.SearchView"
    android:title="@string/text_search"/>
<item
    android:id="@+id/action_scan"
    android:icon="@drawable/action_scan"
    android:showAsAction="always"
    yourapp:showAsAction="always"
    android:title="@string/title_activity_browse"/>

</menu>

NB記得為SearchView類改變了 它現在使用支持庫中的那個,所以你還必須在onCreateOptionsMenu()中更新你的代碼

編輯: 是一個很好的教程,介紹如何從ActionBarSherlok遷移到AppCompat

一個常見的錯誤是忘記在string.xml文件中包含標題字符串。 確保為每個菜單項包含它。

假設我們的菜單xml包含以下項目:

    <item
    android:id="@+id/toggle_action"
    android:orderInCategory="1"
    android:showAsAction="ifRoom"
    android:title="@string/toggle_action"/>

如果我們忘記包含字符串toggle_action的值,則不會顯示操作欄圖標。

轉到strings.xml文件並添加以下內容:

    <string name="toggle_action">TOGGLE</string>

暫無
暫無

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

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