меню опций - удаление фокуса с элемента - PullRequest
8 голосов
/ 17 октября 2010

как убрать фокус из пункта меню настроек? То есть когда я открываю меню в первый раз, ни один из пунктов не имеет фокуса. однако, если я фокусируюсь на одном из них с помощью трекбола, а затем закрываю и снова открываю меню, фокус все еще там. Как мне от этого избавиться?

Я очищаю и воссоздаю меню в onPrepareOptionsMenu (так как я должен настроить его на текущее состояние активности).

EDIT:

public boolean onPrepareOptionsMenu(Menu menu){
    menu.clear();

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.my_menu, menu);

    return true;
}

1 Ответ

0 голосов
/ 07 августа 2011

Как только вы используете трекбол (или действительно нажимаете любую другую клавишу на клавиатуре), вы выходите из сенсорного режима .С этого момента будет некоторое представление, которое имеет фокус (вы можете увидеть это, позвонив Activity.getCurrentFocus()).Этот режим сохраняется до тех пор, пока вы снова не дотронетесь до экрана, после чего вы снова войдете в сенсорный режим, и при последующем открытии меню не будет сфокусированного элемента.Это происходит в каждом приложении Android, которое я видел в меню.

Такая ситуация существует не только для пунктов меню параметров, но и для представлений в макете.Когда вы выходите из сенсорного режима, я не думаю, что есть способ войти в него снова (и, следовательно, убрать фокус со всех видов), если вы не коснетесь экрана.Решение, которое я видел, процитировало для удаления видимых эффектов фокуса (когда не в сенсорном режиме) состоит в том, чтобы просто дать это элементу, который не виден.Не могли бы вы создать невидимую опцию меню и выделить ее, когда хотите очистить?

Если вы не найдете способ программно, надежно войти в сенсорный режим или убрать фокус со всех видов (вызов View.clearFocus() просто проходитэто к другому мнению!), это может быть вашим лучшим выбором.

...