8

オプション メニュー項目からフォーカスを削除するにはどうすればよいですか? つまり、メニューを初めて開いたとき、どの項目にもフォーカスがありません。ただし、トラック ボールを使用してそのうちの 1 つにフォーカスし、メニューを閉じて再度開くと、フォーカスはまだそこにあります。どうすればそれを取り除くことができますか?

メニューをクリアして再作成していますonPrepareOptionsMenu(現在のアクティビティ状態に合わせて調整する必要があるため)。

編集:

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

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

    return true;
}
4

1 に答える 1

0

トラックボールを使用すると (または実際にキーボードの他のキーを押すと)、タッチ モードが終了します。その時点から、フォーカスのあるビューが表示されます (これは を呼び出すことで確認できますActivity.getCurrentFocus())。このモードは、もう一度画面に触れるまで続きます。この時点で再びタッチ モードに入り、その後メニューを開いたときに、フォーカスされた項目はありません。これは、メニューで見たすべての Android アプリケーションで発生します。

この状況は、オプション メニュー項目だけでなく、レイアウト内のビューにも存在します。タッチモードを終了すると、画面に触れない限り、再びタッチモードに入る方法はないと思います(したがって、すべてのビューからフォーカスを外します)。フォーカスの目に見える効果を取り除くために引用された解決策(タッチモードでない場合)は、単に目に見えない要素にフォーカスを与えることです。非表示のメニュー オプションを作成し、それをクリアしたいときにフォーカスを与えることはできますか?

プログラムで確実にタッチ モードに入る方法、またはすべてのビューからフォーカスを削除する方法を見つけない限り (呼び出すView.clearFocus()と別のビューに渡されるだけです!)、これが最善の策かもしれません。

于 2011-08-07T14:42:06.297 に答える