ICSメニューボタンのない携帯電話でオンの3点インジケーター(オプションメニューインジケーター)を無効/非表示にする方法。
マニフェストで<uses-sdk Android:minSdkVersion="5"/>
としてアプリケーションを実行しています。コードは4.0
でコンパイルされます。すべての画面に3つのドットのインジケーターが表示されます。
プリファレンスアクティビティの例メニューオプションがないため、3ドットインジケーターを表示したくありません。
マニフェストにAndroid:targetSdkVersion="14"
を追加すると動作します。ただし、すべての画面で3つのドットボタンを非表示/削除したくない。好みのアクティビティでのみ、この3つのドットのボタンを表示したくありません。
設定のフラグメントの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に設定すると、メニューが消えます
アクティビティでは、唯一の違いはonPrepareOptionsMenu
がboolean
であり、作成時にsetHasOptionsMenu(true);
コマンドを追加する必要がないことです。
メソッドを削除しました:
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
return true;
}
その3つのドットメニューは消えます(:
それが役に立てば幸い。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return false;
}
単一のアクティビティに対して「3ドット」メニューインジケータを表示/非表示にする方法はありません。マニフェストファイルでAndroid:targetSdkVersion = "14"(またはそれ以上)を指定することにより、アプリ全体でのみこのメニューインジケーターを非表示にできます。
ただし、このメニューインジケーターは、ネイティブの Android.preference.PreferenceActivity クラスから拡張される場合、プリファレンスアクティビティに表示されるnotです。いくつかのアプリでこのシナリオを実装していますが、完全に機能します。
PreferenceActivityから拡張されていないカスタム設定の実装を使用していると思います。 Android開発チームは、アプリケーションの設定にPreferenceActivityを常に使用することをお勧めします。
ここでのパーティーに遅すぎる、私はすべてのメニュー項目と3ドット(オプションメニューインジケーター)を削除しようとしていた、私はここで与えられた解決策とは異なる方法で私は誰もそれを言わなかったことに驚いているfalseに設定できる可視性タグがあり、アクティビティのコードを変更する必要はありませんvisibility=false
トリックをする
解像度/メニュー/ ..
<item
Android:id="@+id/action_settings"
Android:orderInCategory="100"
Android:showAsAction="never"
visibility=false
Android:title="@string/action_settings"/>
メソッドをオーバーライドし、superを呼び出さないことをfalseで返します
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return false;
}
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
というフラグが付けられたアイテムです)。
次のコードは私のアプリで機能しました。 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;
}
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
}
「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;
}
実際に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
@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);
}
アイテム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>
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);
}
ボタンを単に非表示にしたい場合、このソリューションは少しハックですが、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" >
これにより、アイコンの幅と高さが実質的になくなります。反対の設計ガイドラインを推奨することはめったにありませんが、私のシナリオでは、メニューボタンが存在することを適切に報告しない専用ハードウェアを使用しました。
する必要があります:
<item
Android:id="@+id/linearlayout_splash"
Android:orderInCategory="100"
Android:showAsAction="never"
Android:visible="false"
Android:title="@string/action_settings"/>
このようにします。
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(leftDrawer);
return (!drawerOpen);
}
ナビゲーションドロワーが表示されているかどうかを確認しています。メニューを非表示にします。必要に応じて使用できます。お役に立てれば。ハッピーコーディング。 :)
これが私の解決策を見つける方法です。多分役立つ。
@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);
}
使ったばかり
@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>