web-dev-qa-db-ja.com

アクションビューアイコンが表示されないアクションバー

新しいアクションバーサポートを使用しています。すべてのアクションビューは、バーのアイコンとしてではなく、オーバーフローで表示されます。私のアプリは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を正しく参照しています。

30
Jumpa

サポートライブラリの属性を使用してmenuリソースファイルを定義する必要があります。

バックサポートを実装するために、古いAndroid version。

<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()のコードを更新する必要があります

EDIT:here は、ActionBarSherlokからAppCompatに移行する方法に関する非常に優れたチュートリアルです。

82
Mario Lenci