2013-10-24 50 views
3

在具有導航抽屜的Android活動中清除焦點的最佳方式是什麼?明確關注顯示導航抽屜時的內容

問題是,當用戶選擇了文本框時,如果您打開導航抽屜的後退事件,它不會被抽屜使用,並且導航返回一步,打開抽屜。

現在我解決了這個問題,但是我想知道是否有人使用另一個解決方案,我不需要使用ActionBarDrawerToggle事件。

/** Called when a drawer has settled in a completely open state. */ 
public void onDrawerOpened(View drawerView) { 
    View window = findViewById(R.id.content_frame); 
    window.clearFocus(); 
} 
+0

您是否設法爲此找到一個乾淨的解決方案? – gunar

回答

3

事實上,它似乎當它打開,這樣它onKeyUp不會被調用的抽屜沒有焦點。我在主機活動中檢查了這個,並在onBackPressedDrawerLayout#hasFocus()返回false,如果活動有一個獲得焦點的視圖 - 一個EditText或其他東西。

我甚至試圖搞砸它的descendantFocusability財產,並沒有奏效。我設法用類似的方法解決這個問題,你做的事:抽屜佈局請求焦點:

mDrawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() { 
    @Override 
    public void onDrawerOpened(View drawerView) { 
     mDrawerLayout.requestFocus(); 
    } 
}); 

您正在清理從內容ViewGroup中的重點,但我不知道誰獲得焦點的話,最有可能沒有看法。
說實話,這在我看來似乎是DrawerLayout中的一個錯誤,就好像它被打開了一樣,它應該獲得焦點。