2010-06-24 122 views
7
<EditText android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:layout_weight="1" 
    android:id="@+id/name" android:singleLine="true" 
    android:maxLength="12" android:capitalize="none" android:inputType="text" /> 
<Button android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:id="@+id/search_button" 
    android:text="Search" /> 

我有這個在我的應用程序的頂部。當應用程序啓動時,EditText被突出顯示爲橙色並在其中有一個光標;當點擊EditText時,彈出軟鍵盤。用戶使用它來輸入EditText。Android:EditText和Button;當點擊按鈕時,放開EditText並隱藏軟鍵盤?

但是,當他們點擊按鈕時,我的onClick方法會觸發並執行所有應有的操作,但軟鍵盤保持在屏幕上並且EditText仍然用光標高亮顯示。

我也有,在按鈕的onclick的頂部:

findViewById(R.id.name).clearFocus(); 

雖然如此,在EditText上似乎並沒有明確的焦點。我如何使按鈕實際上像提交表單一樣行事?

此外,我不轉換到按鈕的點擊不同的活動。我認爲這是典型的情況,可能是他們不打擾隱藏鍵盤的原因。不過,我想讓搜索框和按鈕保持在屏幕頂部,所以當按下按鈕時,我只是動態地填充和添加視圖到屏幕上。

我該如何達到自己想要的行爲?

回答

13

你可以通過調用這個來隱藏鍵盤。

InputMethodManager imm = (InputMethodManager) getSystemService(
    INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(getWindowToken(), 0); 
+0

是的,但這真的是最好的方式去做這件事嗎? – Ricket 2010-06-24 13:42:59

+0

嗯,它的工作...所以我想這沒關係...儘管如此,似乎仍然是一個黑客... – Ricket 2010-06-24 13:45:56

+1

這不是一個破解,它是如何完成Android的源代碼。我假設它是針對用戶按下done來關閉IME的,但是如果他們不這樣做或者您想手動關閉它,那麼這就是您在Android自行關閉之前必須關閉IME的方式。 – 2010-06-24 13:47:03