2010-10-17 61 views
8

如何從選項菜單項中刪除焦點?即當我第一次打開菜單時,沒有任何項目有焦點。但是,如果我使用跟蹤球將注意力集中在其中一個上,然後關閉並重新打開菜單,焦點仍然存在。我如何擺脫它?選項菜單 - 從項目刪除焦點

我正在清理並重新創建onPrepareOptionsMenu中的菜單(因爲我必須將其調整爲當前活動狀態)。

編輯:

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

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

    return true; 
} 
+2

你能找到解決方案嗎? – dropsOfJupiter 2011-07-06 23:38:35

+1

你可以發佈代碼來重現問題嗎?我會很樂意爲你研究它。這是一個有趣的問題。 – 2011-08-02 20:09:28

回答

0

一旦你使用軌跡球(或者實際上按鍵盤上的任何其他鍵),退出touch mode。從那時起,會有一些觀點關注焦點(你可以通過調用Activity.getCurrentFocus()來看到這一點)。此模式一直持續到您再次觸摸屏幕爲止,此時您將重新進入觸摸模式,並且在後續場合打開菜單時不會有焦點項目。這發生在我用菜單看過的每一個Android應用程序中。

這種情況不僅存在於選項菜單項中,而且還存在於佈局中的視圖。一旦你離開觸摸模式,我認爲沒有辦法再次輸入它(因此除去所有視圖中的焦點),除非你觸摸屏幕。我曾經見過的一個解決方案是爲了消除焦點的可見效應(當不在觸摸模式下)時,只需將其提供給不可見的元素即可。你可以創建一個不可見的菜單選項,並在你想清除它時給它關注嗎?

除非你找到一個方法來編程,可靠地進入觸摸模式或從(調用View.clearFocus()只是把它傳遞給另一個視圖!)所有視圖移除焦點,這可能是你最好的選擇。