web-dev-qa-db-ja.com

ICS携帯電話で3点インジケーター(オプションメニューインジケーター)を無効/非表示にする方法

ICSメニューボタンのない携帯電話でオンの3点インジケーター(オプションメニューインジケーター)を無効/非表示にする方法。

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

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

マニフェストにAndroid:targetSdkVersion="14"を追加すると動作します。ただし、すべての画面で3つのドットボタンを非表示/削除したくない。好みのアクティビティでのみ、この3つのドットのボタンを表示したくありません。

47
Subba

設定のフラグメントの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に設定すると、メニューが消えます

アクティビティでは、唯一の違いはonPrepareOptionsMenubooleanであり、作成時にsetHasOptionsMenu(true);コマンドを追加する必要がないことです。

31
Asaf Manassen

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

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

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


それが役に立てば幸い。

25
alicanbatur
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
       return false;
 }
17
dnocode

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

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

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

9
HitOdessit

ここでのパーティーに遅すぎる、私はすべてのメニュー項目と3ドット(オプションメニューインジケーター)を削除しようとしていた、私はここで与えられた解決策とは異なる方法で私は誰もそれを言わなかったことに驚いているfalseに設定できる可視性タグがあり、アクティビティのコードを変更する必要はありませんvisibility=falseトリックをする

解像度/メニュー/ ..

<item
    Android:id="@+id/action_settings"
    Android:orderInCategory="100"
    Android:showAsAction="never"
    visibility=false
    Android:title="@string/action_settings"/>
6
war_Hero

メソッドをオーバーライドし、superを呼び出さないことをfalseで返します

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    return false;
}
5
dnocode

res / menu / main.xmlのこのアイテムを削除

<item
    Android:id="@+id/action_settings"
    Android:orderInCategory="100"
    Android:showAsAction="never"
    Android:title="@string/action_settings"/>

さらに:do not addshowAsAction="never"-を持つアイテムは、ドットが表示されないようにします。一度に表示できないアイテムよりも多い場合は、ドットが再び表示されます(それらはifRoomというフラグが付けられたアイテムです)。

4
Weverton Souza

次のコードは私のアプリで機能しました。 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;
}
4
David T. Nguyen
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
    }
3
Kishore Reddy

「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;
}
2
GCoe

実際にAndroid targetVersionを変更して、3ドットメニューを非表示または表示にすることができます。このようにアクティビティの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.x.xおよびAndroid 3.0

2
user3866289

@war_heroの答えを改善したいだけです。実行時に可視性を設定する場合は、次のようにoncreateoptionsメニューパラメータを使用できます。

Menu overflow;

 @Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.mymenu, menu);
    this.overflow = menu;
    return super.onCreateOptionsMenu(menu);
}

次に、インデックスに従ってメニュー項目を表示または非表示にする関数を作成します。例えば.

public void hideorShowMenuItems(boolean bool){
   overflow.getItem(1).setVisible(bool);
   overflow.getItem(2).setVisible(bool);
   overflow.getItem(3).setVisible(bool);
   overflow.getItem(4).setVisible(bool);
   overflow.getItem(5).setVisible(bool);
}
2
codepeaker

アイテムAndroid:visible = "false"を作成するために必要なメニューフォルダーのmain.xmlにこのコードをコピーして貼り付けます

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto">
    <item
        Android:id="@+id/action_settings"
        Android:orderInCategory="100"
        Android:visible="false"
        Android:title="@string/action_settings"
        app:showAsAction="never" />
</menu>
2
Karan Shaw

MainActivityが

パブリッククラス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);
}
1
Rijul Sudhir

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

styles.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" >

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

1
Stephen Kidson

する必要があります:

<item
    Android:id="@+id/linearlayout_splash"
    Android:orderInCategory="100"
    Android:showAsAction="never"
    Android:visible="false"
    Android:title="@string/action_settings"/>
1
Vachy

このようにします。

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

ナビゲーションドロワーが表示されているかどうかを確認しています。メニューを非表示にします。必要に応じて使用できます。お役に立てれば。ハッピーコーディング。 :)

0
Atul O Holic

これが私の解決策を見つける方法です。多分役立つ。

@Override
public boolean onKeyDown(int keycode, KeyEvent event ) {
    //KEYCODE_MENU
 if(keycode == KeyEvent.KEYCODE_MENU){
 /* AlertDialog.Builder dialogBuilder 
  = new AlertDialog.Builder(this)
  .setMessage("Test")
  .setTitle("Menu dialog");
  dialogBuilder.create().show();*/
  return true;

//  finish();
 }
 return super.onKeyDown(keycode,event);  
}
0
Bay

使ったばかり

 @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>
0
Analizer