/ / Android ICSで3ドットのドロップダウンオプションメニューを強制的に表示できますか? [終了]-android、ドロップダウンメニュー、android-actionbar、android-4.0、popupmenu

Android ICSで3ドットドロップダウンメニューを強制的に表示できますか? [閉じた] - アンドロイド、ドロップダウンメニュー、android-actionbar、android-4.0、popupmenu

Android ICSで3ドットのドロップダウンメニューを強制的に表示する方法を見つけようとしています。設定/メニュー用のハードボタンがない場合に表示されるはずです。

これが私が言及しているもののスクリーンショットです。

http://cdn.gottabemobile.com/wp-content/uploads/2011/12/ICS-Screen05.jpg

ありがとう!

回答:

回答№1は1

を使用して、項目を強制的にオーバーフローメニューに表示することができます。 android:showAsAction="never" メニューXMLで。 ただし、デバイスにハードウェアメニューキーがある場合、オーバーフローは表示されません。クリックしたアイテムを偽造し、カスタムコンテキストメニューなどをドロップダウンする必要があります。

私もアプリでこれに遭遇しましたが、強制したいのと同じくらい、予想されるプラットフォームの動作に合わせてメニューボタンに任せるのがおそらく最善です。


回答№2の場合は1

結局のところ、それは結構単純です。最近、アプリに実装しました。

オーバーフローメニューに表示する必要がある項目は、次のように1つのメニュー項目の下にネストします。

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

<item
android:id="@+id/empty"
android:orderInCategory="101"
android:showAsAction="always"
android:icon="@drawable/ic_action_overflow">

<menu>

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

<item
android:id="@+id/action_share"
android:orderInCategory="97"
android:showAsAction="never"
android:title="@string/menu_share"
android:icon="@drawable/ic_action_share"/>

<item
android:id="@+id/action_rate"
android:orderInCategory="98"
android:showAsAction="never"
android:title="@string/menu_rate"
android:icon="@drawable/ic_action_important"/>

<item
android:id="@+id/action_feedback"
android:orderInCategory="99"
android:showAsAction="never"
android:title="@string/menu_feedback"
android:icon="@drawable/ic_action_edit"/>

</menu>
</item>
</menu>

次に、メインアクティビティファイルを次のように編集します。

package com.example.test;
//all your import statements go here

Menu mainMenu=null;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
mainMenu=menu;
return true; }


//Menu press should open 3 dot menu
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_MENU) {
mainMenu.performIdentifierAction(R.id.empty, 0);
return true; }
return super.onKeyDown(keyCode, event); }