1

ActionBarCompat を実装して、異なる OS バージョン間で ActionBar を使用できるようにしました。
スマートフォンでは非表示、タブレットのみで表示されます。

このスクリーンショットを見ると、http://developer.android.com/resources/samples/ActionBarCompat/index.html共有オプションメニューのサブメニューにログアウトオプションが表示されますが、サンプルコードをコンパイルして実行すると、タブレットでは、ログアウトオプションが完全に非表示になり、サブメニューとして表示するオプションがありませんでした

それから私はこのようなことをしようとしました:

<item        
    android:icon="@android:drawable/ic_menu_delete"
    android:orderInCategory="1"
    android:showAsAction="always"
    android:title="@string/menu_logout">
    <menu>
        <item
            android:id="@+id/menu_logout"                                
            android:title="@string/menu_logout"/>
    </menu>
</item>

そして、それは本当に私が望むように見えます-タブレットでは、スマートフォンでは、望ましくない効果があります-ログアウトオプションメニューをクリックすると、ネストされたメニューが原因である別のコンテキストメニューが表示されます.

タブレットでアクションバーを使用しているときにサブメニューを表示し、スマートフォンで通常のオプションメニューのみを表示するにはどうすればよいですか? おそらく、ActionBarCompat には追加の構成が必要ですか?

4

1 に答える 1

1

解決策を見つけました。このソリューションは、タブレット用とスマートフォン用の 2 つの個別のメニュー リソース ファイル (menu_tablet.xml、menu_smartphone) で構成されます。

タブレットの場合、サブメニューを表示します。

<item        
    android:icon="@android:drawable/ic_menu_delete"
    android:orderInCategory="1"
    android:showAsAction="always"
    android:title="@string/menu_logout">
    <menu>
        <item
            android:id="@+id/menu_logout"                                
            android:title="@string/menu_logout"/>
    </menu>
</item>

スマートフォンの場合、通常のオプション メニューとして表示します。

<item        
        android:icon="@android:drawable/ic_menu_delete"
        android:orderInCategory="1"
        android:showAsAction="always"
        android:id="@+id/menu_logout"                                
        android:title="@string/menu_logout"    />

そして、コードで適切なメニュー リソースを次のようにインフレートします。

if(isTablet()){
    menuInflater.inflate(R.menu.menu_tablet, menu);
}else{
    menuInflater.inflate(R.menu.menu_smartphone, menu);
}
于 2012-05-14T11:52:28.167 に答える