2011-10-05 57 views
2

我的應用程序中有一個EditText小部件,我已將其設置爲只讀,並且我想知道用戶何時長按。如果用戶點擊此小部件,我不希望虛擬鍵盤彈出。如何在EditText Widget上長按時防止虛擬鍵盤顯示?

要停止從出現的虛擬鍵盤,我使用的是這樣的:

的EditText文本=(EditText上)findViewById(R.id.editText01); editText.setClickable(false);

這有效,但如果我使用OnLongClickListener(),則無法獲得任何長按消息。

有誰知道我可以如何防止彈出鍵盤出現,但仍然得到長按事件?

謝謝。

編輯:我實際上嘗試了提供給這個問題的前兩個答案,都沒有工作。我最終什麼事做,是爲小部件的EditText我用下面的:

editText.setInputType(InputType.TYPE_NULL); 
editText.setCursorVisible(false); 
editText.setOnLongClickListener(mOnLongClickListener); 

的setInputType()方法調用關閉點擊的小部件。 setOnLongClickListener()例程將處理小部件上的所有長按事件,並且我從基本上消耗長按事件的例程返回一個true。因此,我現在有一個EditText小部件,按下時不會出現虛擬鍵盤彈出窗口,但長按這個小部件將會調用我的偵聽器方法。

回答

2
button.setOnLongClickListener (View.OnLongClickListener l(){ 

//override the method 

//then do this 

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 
}); 
1

請嘗試使用此選項和可用選項。

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

我的問題是,當我的活動開始時,如果有EditText,kepyboard會自動加強。所以,我在OnCreate()中使用了上面的代碼。嘗試使用不同的選項而不是「.SOFT_INPUT_STATE_ALWAYS_HIDDEN」

相關問題