Как отключить/скрыть трехточечный индикатор (индикатор меню опций) на телефонах ICS
36 user1198982 [2012-02-09 09:44:00]
Как отключить/скрыть трехточечный индикатор (индикатор меню опций) на телефонах ICS, у которых нет кнопки меню.
Я запускаю приложение как <uses-sdk android:minSdkVersion="5"/>
в манифесте, код скомпилирован с помощью 4.0
. На каждом экране отображается индикатор с тремя точками.
Пример для действий с предпочтениями я не хочу показывать индикатор с тремя точками, так как он не имеет никаких параметров меню.
Добавление android:targetSdkVersion="14"
в манифест работает. Однако не нужно скрывать/удалять три точки на всех экранах. Только в настройках предпочтения не хотят показывать эту кнопку с тремя точками.
android android-4.0
19 ответов
29 Asaf Manassen [2012-09-03 23:52:00]
Переопределить 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
is boolean
, и вам не нужно добавлять команду setHasOptionsMenu(true);
при создании
19 alicanbatur [2013-04-11 14:28:00]
Я просто удалил метод:
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
return true;
}
тогда это трехточечное меню уходит (:
Надеюсь, что это поможет.
13 dnocode [2015-02-09 13:53:00]
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return false;
}
9 HitOdessit [2012-08-31 13:14:00]
Невозможно показать/скрыть "трехточечный" индикатор меню для одного действия. Вы можете скрыть этот индикатор меню только для всего приложения, указав андроид: targetSdkVersion = "14" (или выше) в файле манифеста.
Однако этот индикатор меню не показывает активность предпочтений, если он распространяется из класса android.preference.PreferenceActivity. У меня этот сценарий реализован в нескольких моих приложениях, и он отлично работает.
Я предполагаю, что вы используете некоторые пользовательские настройки предпочтений, которые не распространяются на PreferenceActivity. Android Dev Team предлагает всегда использовать PreferenceActivity для любых настроек в ваших приложениях.
4 David T. Nguyen [2013-11-14 02:17:00]
Следующий код работал для моего приложения. Пробовал 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 Weverton Souza [2015-02-06 02:25:00]
Удалить этот элемент в res / menu / main.xml
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
Кроме того: не добавлять элемент с showAsAction="never"
- это позволит избежать отображения точек. Если у вас есть больше предметов, чем не может быть показано сразу, точки снова будут там (и они будут помечены как ifRoom
).
4 dnocode [2014-10-23 00:22:00]
метод переопределения и возврат false помнить о не вызове super
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return false;
}
2 user3866289 [2014-07-28 19:28:00]
Фактически вы можете изменить Android targetVersion, заставив меню с тремя точками либо скрыть, либо показать. Вы должны переопределить 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 GCoe [2015-04-09 00:36:00]
Я просто исключил метод 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 war_Hero [2015-07-09 08:59:00]
Слишком поздно для вечеринки здесь, я пытался удалить все пункты меню и 3-точки (индикатор меню опций), я сделал иначе, чем приведенное здесь решение. Я удивлен, что никто не сказал об этом. Существует тег видимости, который может быть установлен в false и не требуется изменение кода в активности visibility=false
делает трюк
в res/menu/..
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
visibility=false
android:title="@string/action_settings"/>
1 codepeaker [2017-02-17 08:24:00]
Просто хочу улучшить ответ @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);
}
1 user2557156 [2015-07-17 12:06:00]
Должно быть:
<item
android:id="@+id/linearlayout_splash"
android:orderInCategory="100"
android:showAsAction="never"
android:visible="false"
android:title="@string/action_settings"/>
1 Karan Shaw [2017-04-16 01:59:00]
Скопируйте этот код в файл main.xml в папке меню вам просто нужно сделать элемент android: visible = "false"
<?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>
1 Rijul Sudhir [2016-04-28 12:58:00]
Если 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);
}
0 Atul O Holic [2014-02-08 09:53:00]
Сделайте это так.
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(leftDrawer);
return (!drawerOpen);
}
Я проверяю, видим ли мой навигационный ящик, я скрою меню и наоборот. Вы можете использовать его в соответствии с вашим требованием. Надеюсь это поможет. Счастливое кодирование.:)
0 Bay [2014-04-05 00:16:00]
Вот как я нахожу свое решение. Это может быть полезно.
@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 Stephen Kidson [2015-08-04 23:59:00]
Если вы просто хотите скрыть кнопку, это решение немного взломано, но работает во всех версиях 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" >
Это фактически просто означает, что значок не имеет ширины и высоты. Я редко рекомендую противопоставлять рекомендации по дизайну, но в моем сценарии мы использовали выделенное оборудование, которое не сообщило о необходимости нажатия кнопки меню.
0 Kishore Reddy [2017-12-15 09:06:00]
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
}
0 Analizer [2014-09-27 16:42:00]
Я просто использовал
@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>