Как отключить / скрыть трехточечный индикатор (индикатор меню параметров) на телефонах ICS - PullRequest
46 голосов
/ 09 февраля 2012

Как отключить / скрыть трехточечный индикатор (индикатор меню параметров) на телефонах ICS, у которого нет кнопки меню.

Я запускаю приложение как <uses-sdk android:minSdkVersion="5"/> в манифесте, код скомпилирован с 4.0. Трехточечный индикатор отображается на каждом экране.

Пример действий с предпочтениями. Я не хочу показывать трехточечный индикатор, поскольку у него нет пунктов меню.

Добавление android:targetSdkVersion="14" в манифест работает. Однако не хочу скрывать / удалять кнопку с тремя точками на всех экранах. Только в предпочтительных действиях не хочу показывать эту кнопку с тремя точками.

Ответы [ 19 ]

2 голосов
/ 09 апреля 2015

Я только что исключил метод 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 голосов
/ 17 февраля 2017

Просто хочу улучшить ответ @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 голосов
/ 28 июля 2014

Вы можете изменить 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

1 голос
/ 28 апреля 2016

Если 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 голос
/ 04 августа 2015

Если вы просто хотите скрыть кнопку, это решение немного взломано, но работает на всех версиях 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), которую используют только определенные действия:1008 *

AndroidManifest.xml

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

По сути, значок не имеет ширины и высоты.Я редко рекомендую противоположные рекомендации по проектированию, но в моем сценарии мы использовали специальное оборудование, которое не сообщало должным образом о наличии кнопки меню.

1 голос
/ 17 июля 2015

Должно быть:

<item
    android:id="@+id/linearlayout_splash"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:visible="false"
    android:title="@string/action_settings"/>
0 голосов
/ 08 февраля 2014

Сделайте это так.

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

Я проверяю, виден ли мой навигационный ящик, я скрою меню и наоборот.Вы можете использовать его в соответствии с вашими требованиями.Надеюсь это поможет.Удачного кодирования.:)

0 голосов
/ 05 апреля 2014

Вот так я нахожу свое решение. Это может быть полезно.

@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 голосов
/ 27 сентября 2014

Я только что использовал

 @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>
...