3

カスタムの方法でアクションボタンを表示する必要があるActionBarがあります。このために、カスタムビューを作成し、それをActionBarにアタッチしました。

言及すべきことの1つは、menu.xmlリソースファイルを使用してオプションメニューをロードし、スマートフォンに表示していますが、タブレットには表示せず、代わりにカスタムビューを使用していることです。このために、私はxml内のすべてのメニュー項目を次のように販売しています。android:showAsAction="never"

ActionBarの右側に残っている1つの小さなもの、[詳細]ボタンを除いて、すべてが正常に見えます。

どうすれば削除できますか?

ここに画像の説明を入力してください

私はこれを試しました:

ActionBar bar = activity.getActionBar();
bar.removeAllTabs();

しかし、「もっと見る」ボタンはまだそこに残っています。

編集:
これは私のmenu.xmlファイルです:

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

    <item
        android:id="@+id/menu_username"
        android:icon="@drawable/menu_username"
        android:orderInCategory="0"
        android:showAsAction="never"
        android:title="@string/menu_username">
        <menu>
            <item
                android:id="@+id/menu_logout"
                android:title="@string/menu_logout"/>
        </menu>
    </item>

    <item
        android:id="@+id/menu_settings"
        android:icon="@drawable/menu_settings"
        android:orderInCategory="1"
        android:showAsAction="never"
        android:title="@string/menu_settings"/>

    <item
        android:id="@+id/menu_search"
        android:icon="@drawable/menu_search"
        android:orderInCategory="1"
        android:showAsAction="never"
        android:title="@string/menu_search"/>

</menu>

このメニューをスマートフォンで膨らませたいのですが、タブレットでは使いたくないことに注意してください。

4

1 に答える 1

2

設定showAsAction="never"すると、メニュー項目が強制的にオーバーフローします。onCreateOptionsMenu(...)で、デバイスがタブレットであることを確認し、メニューが膨らんでいない場合はどうでしょうか。このようなもの:

public boolean onCreateOptionsMenu(Menu menu) {
    if (getResources().getConfiguration().smallestScreenWidthDp >= 600) {
        //It's a tablet, don't inflate, only create the manual view
        manualMenuCreation();
    } else {
        getMenuInflater().inflate(R.menu.menu, menu);
    }
    return true;
}

3.2以降でのみ利用可能であることを忘れないでくださいsmallestScreenWidthDp。そのため、それを考慮する必要があります。

于 2012-06-09T14:34:39.793 に答える