Я хотел бы открыть опцииMenu программно, не нажимая на кнопку меню от пользователя. Как мне это сделать?
Как программно открыть меню опций?
Ответ 1
Или просто позвоните Activity.openOptionsMenu()?
Ответ 2
По-видимому, это делается в onCreate breaks app, так как Activity еще не привязана к окну. Если вы сделаете это так:
@Override
public void onAttachedToWindow() {
openOptionsMenu();
};
... он работает.
Ответ 3
Для разработчиков, использующих новый класс Toolbar
для Support Library
, вот как это делается:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.showOverflowMenu();
Ответ 4
Поместите эту строку кода в свой onResume(), это должно помочь!
new Handler().postDelayed(new Runnable() {
public void run() {
openOptionsMenu();
}
}, 1000);
Ответ 5
из OnClickListener внутри действия, называемого MainActivity:
MainActivity.this.openOptionsMenu();
Ответ 6
при использовании AppCompatActivity
getSupportActionBar().openOptionsMenu();
Ответ 7
Два способа сделать это:
Activity.getWindow().openPanel(Window.FEATURE_OPTIONS_PANEL, event);
Аргумент event
- это KeyEvent
, описывающий ключ, используемый для открытия меню, который может изменять способ отображения меню в зависимости от типа клавиатуры.
Или... путем моделирования того, что пользователь нажал кнопку:
IWindowManager wManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
KeyEvent kd = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SOFT_LEFT);
KeyEvent ku = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_SOFT_LEFT);
wManager.injectKeyEvent(kd.isDown(), kd.getKeyCode(), kd.getRepeatCount(), kd.getDownTime(), kd.getEventTime(), true);
Ответ 8
После долгих исследований и многих попыток, единственный способ, похоже, имитирует KeyEvent
. Появится меню параметров:
BaseInputConnection mInputConnection = new BaseInputConnection( findViewById(R.id.main_content), true);
KeyEvent kd = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU);
KeyEvent ku = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MENU);
mInputConnection.sendKeyEvent(kd);
mInputConnection.sendKeyEvent(ku);
Ответ 9
Если вы находитесь внутри своего вида, вы можете написать
((Activity)getContext()).openOptionsMenu();
Ответ 10
Для меня объявление toolbar.showOverflowMenu()
в onClick не работает. openOptionsMenu()
тоже не работал у меня. Вместо этого для меня работает следующий способ:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
toolbar.showOverflowMenu();
}
}, 500);
Ответ 11
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(0xFFFFFFFF);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
toolbar.showOverflowMenu();
}
}, 100);