49

メニュー ボタンのない ICS ハンドセットで 3 ドット インジケータ (オプション メニュー インジケータ) を無効化/非表示にする方法。?

マニフェストのようにアプリケーションを実行しています。<uses-sdk android:minSdkVersion="5"/>コードは4.0. すべての画面に 3 つのドット インジケータが表示されます。

設定アクティビティの例 メニュー オプションがないため、3 つのドット インジケーターを表示したくありません。

android:targetSdkVersion="14"マニフェストに追加すると機能します。ただし、すべての画面で 3 つのドット ボタンを非表示/削除する必要はありません。設定アクティビティでのみ、この 3 つのドット ボタンを表示したくありません。

4

19 に答える 19

33

onPrepareOptionsMenu()これで設定のフラグメントをオーバーライドします。

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem item= menu.findItem(R.id.menu_settings);
    item.setVisible(false);
    super.onPrepareOptionsMenu(menu);
    return true;
}

複数のアイテムがある場合は、すべてのアイテムの可視性フラグを false に設定します

setHasOptionsMenu(true); コマンドにonCreateコマンドを追加します

アイテムのすべての可視性を false に設定すると、メニューが非表示になります

アクティビティでは、唯一の違いは is でonPrepareOptionsMenuあり、作成時にコマンドbooleanを追加する必要はありませんsetHasOptionsMenu(true);

于 2012-09-03T20:52:00.837 に答える
27

メソッドを削除しました:

@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
    getSupportMenuInflater().inflate(R.menu.main, menu);
    return true;
}

その後、その 3 ドット メニューは消えます (:


それが役に立てば幸い。

于 2013-04-11T11:28:55.027 に答える
17
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
       return false;
 }
于 2015-02-09T10:53:01.557 に答える
9

単一のアクティビティの「3 つのドット」メニュー インジケーターを表示/非表示にする方法はありません。マニフェスト ファイルでandroid:targetSdkVersion="14" (またはそれ以上) を指定することで、アプリ全体に対してのみこのメニュー インジケーターを非表示にできます。

ただし、ネイティブandroid.preference.PreferenceActivityクラスから拡張された場合、このメニュー インジケーターは設定アクティビティに表示されません。このシナリオをいくつかのアプリに実装しましたが、完全に機能します。

PreferenceActivity から拡張されていないカスタム設定の実装を使用していると思います。Android 開発チームは、アプリケーションのすべての設定に常に PreferenceActivity を使用することを提案しています。

于 2012-08-31T10:14:15.963 に答える
5

メソッドをオーバーライドして false を返す super を呼び出さないことを覚えている

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    return false;
}
于 2014-10-22T21:22:06.660 に答える
4

次のコードは私のアプリで機能しました。Samsung Galaxy S4 (Android 4.3) と Nexus 4 (Android 4.2) で試しました:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem item= menu.findItem(R.id.action_settings);
    item.setVisible(false);
    return true;
}
于 2013-11-13T23:17:02.423 に答える
3
for hiding 3 dots in actionbar/ toolbar

 public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_dash_board_drawer, menu);
        return false;  //for visible 3 dots change to true, hiding false
    }
于 2017-12-15T06:06:39.403 に答える
2

Android の targetVersion を実際に変更して、3 ドット メニューを強制的に非表示または表示にすることができます。次のように、Activity の onCreate をオーバーライドする必要があります。

@Override
public void onCreate(Bundle savedInstanceState) {
    getApplicationInfo().targetSdkVersion = 10; // To enable the 3-dot menu call this code before super.OnCreate
    super.onCreate(savedInstanceState); 
}

@Override
public void onCreate(Bundle savedInstanceState) {
    getApplicationInfo().targetSdkVersion = 14; // To disable the 3-dot menu call this code before super.OnCreate
    super.onCreate(savedInstanceState); 
}

Android 4.xx および Android 3.0 でテスト済み

于 2014-07-28T16:28:27.960 に答える
2

単にボタンを非表示にしたい場合、この解決策は少しハックですが、(AppCompat を使用して) Android のすべてのバージョンで機能し、他のメニュー項目には影響しません。

スタイル.xml

<style name="AppTheme" parent="Theme.AppCompat.Light">
    ...
    <item name="android:actionOverflowButtonStyle">@style/AppTheme.Overflow</item>
    <!-- If you're using AppCompat, instead use -->
    <item name="actionOverflowButtonStyle">@style/AppTheme.Overflow</item>
</style>

<style name="AppTheme" />
<style name="AppTheme.Overflow">
    <item name="android:src">@null</item>
</style>

一部の画面でのみ [オーバーフロー] ボタンを非表示にする場合は、これを特定のアクティビティのみが使用する別のテーマにすることができます (上記の AppTheme を AppTheme.NoOverflow に変更します)。

AndroidManifest.xml

<activity android:name=".NoOverflowActivity"
          android:theme="@style/AppTheme.NoOverflow" >

これにより、アイコンに幅と高さがなくなります。反対のデザイン ガイドラインを推奨することはめったにありませんが、私のシナリオでは、メニュー ボタンが存在することを適切に報告しない専用ハードウェアを使用しました。

于 2015-08-04T20:59:26.457 に答える
2

「onCreateOptionsMenu」メソッドを除外しました:

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    //Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_planos, menu);
    return true;
}
于 2015-04-08T21:36:20.550 に答える
1

MainActivity が

public class MainActivity は AppCompatActivity を拡張します

MainActivity クラスで、以下のコードを削除します。

@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);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
于 2016-04-28T09:58:00.607 に答える
0

このようにしてください。

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // if nav drawer is opened, hide the action items
    boolean drawerOpen = mDrawerLayout.isDrawerOpen(leftDrawer);
    return (!drawerOpen);
}

ナビゲーション ドロワーが表示されているかどうかを確認しています。メニューを非表示にします。その逆も同様です。ご要望に応じてご利用いただけます。お役に立てれば。ハッピーコーディング。:)

于 2014-02-08T06:53:29.130 に答える
0

ちょうど使った

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

R.menu.main は空のメニュー xml のみです

<menu xmlns:android="http://schemas.android.com/apk/res/android" ></menu>
于 2014-09-27T13:42:56.673 に答える