2014-02-07 15 views
8

返回時,當我從另一個活動返回到主活動中,搜索查看獲得焦點和鍵盤打開後,我設法通過阻止正常打開鍵盤:搜索查看獲得焦點,並打開鍵盤從另一個活動

getWindow().setSoftInputMode(
       WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

但這還不夠,如果操作欄下拉菜單打開並關閉,鍵盤會再次出現,因爲searchView仍然有焦點(請記住我只關閉了鍵盤)。我試圖獲得對searchView的引用,並使其失去焦點,但這沒有奏效。

所以基本上,我只是想讓searchView永遠不會有焦點或提示鍵盤打開,除非searchView文本區域被實際觸及。

+0

查看此解決方案:http://stackoverflow.com/a/39635722/2535875 –

回答

11

這是由於SearchView是活動重新進入視圖時的第一個可調焦視圖 - 同一問題can be seen for EditTexts

解決方案是相同的 - 在層次結構中設置一個較早的視圖以便可聚焦。就我而言,這是ToolbarSearchView是在頂部:

<android.support.v7.widget.Toolbar 
    style="@style/ToolbarStyle" 
    android:focusableInTouchMode="true" 
    android:id="@+id/search_activity_toolbar" 
    android:layout_height="?attr/actionBarSize" 
    android:layout_width="match_parent"/> 

<android.support.v7.widget.SearchView 
    android:iconifiedByDefault="false" 
    ... /> 

現在我可以進入活動(clearFocus(); requestFocus(...);)當我SearchView獲得焦點,那麼當你通過搜索結果退出活動,那麼按Back鍵返回,鍵盤處於與離開時相同的狀態。

請注意,一些關於鏈接問題的其他解決方案,即setting windowSoftInputMode="stateUnchanged" on the Activity確實不是適合我。

+0

應該是acc epted回答imho –

+0

...救了我一小時的工作。非常感謝:) –

+0

醜。但它*實際上*起作用。得到了我的投票。 :-) –

0

在初始化

mSearchView.setIconifiedByDefault(false); 

,回來的時候,把這個onResume()onCreateOptionsMenu(如搜索,菜單)

mSearchView.setIconified(false); 

然後,當你回來,直到你的鍵盤不會打開點擊編輯文本searchview

相關問題