2011-10-05 276 views
5

我在我的應用程序中有自己的鍵盤,所以我想一直隱藏軟件鍵盤(在特定活動&對話框中)。 我嘗試了兩種選擇:如何防止軟件鍵盤彈出?

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

此代碼防止鍵盤在開始雨後春筍般冒出來,但是當我點擊文本框的鍵盤仍然彈出。

InputMethodManager imm = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); 

此代碼隱藏鍵盤,但它不會阻止鍵盤彈出。

請幫助!

+0

退房這個http://stackoverflow.com/questions/7289335/soft-keyboard-shows-up-on-edittext-focus-only -once/7291121#7291121 –

+0

thx但我在那裏有一個不同的問題...我想從一開始就隱藏鍵盤,並防止它彈出來,無論我做什麼 – Han

回答

8

終於想通了!

我用

public void supressKeyboard() { 
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
} 

的,我想打壓鍵盤活動(你可以把它放在一個普通的活動,所有其他活動的繼承)

但這不會阻止鍵盤在您點擊EditText文本框時彈出。我所做的是我消耗的文本框中onTouch事件:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    return true; 
} 
+0

這也是我使用的技術 – castle1971

+1

How你有光標顯示,還是你?每當我吞下觸摸事件時,它都會阻止顯示光標。 –

+0

這篇文章很舊,但是......我想知道,你還能用硬件鍵盤輸入嗎? –