[英]Hiding the soft keyboard when typing in EditText in Android 4
我正在為Android編寫計算器,用於輸入表達式我使用EditText。 當我創建我的按鈕 - 我不需要軟件鍵盤,但我想更改光標位置,文本選擇,復制,粘貼。 總而言之 - 一切都是這樣,只顯示虛擬鍵盤。 在2.3版中我可以寫:
EditText.setInputType (InputType.TYPE_NULL);
它工作得很好。 在光標的版本4中沒有顯示,菜單不起作用等。嘗試了很多方法 - 你不能移動光標,鍵盤顯示,它從來沒有真正解釋過。
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); //cursor not showing
------------------------------------------------------------------------
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); //not working
我想在Panecal,MobiCalc Free,科學計算器中制作它。 對此我會很樂意提出任何有用的建議。 PS抱歉我的英文。
從下面發布的鏈接中,這是一個使用Edittext觸摸的示例
editText_input_field.setOnTouchListener(otl);
private OnTouchListener otl = new OnTouchListener() {
public boolean onTouch (View v, MotionEvent event) {
return true; // the listener has consumed the event
}
};
這是同一網站的另一個例子。 這聲稱工作,但似乎是一個壞主意,因為你的EditBox是NULL它將不再是一個編輯器:
MyEditor.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int inType = MyEditor.getInputType(); // backup the input type
MyEditor.setInputType(InputType.TYPE_NULL); // disable soft input
MyEditor.onTouchEvent(event); // call native handler
MyEditor.setInputType(inType); // restore input type
return true; // consume touch even
}
});
希望這能指出你正確的方向
上面的答案取自 - 如何在Android中單擊edittext時阻止虛擬鍵盤?
這可能也適用於getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
對此的確切解決方案是將EditText中的標志textIsSelectable
設置為true 。 這將保留光標,您將能夠使用基本的選擇/復制/剪切/粘貼等功能。您可以在xml布局中設置它,如下所示:
您可以像下面這樣以編程方式設置它:
EditText edit_text = (EditText) findViewById(R.id.editText);
edit_text.setTextIsSelectable(true);
或者在XML布局中:
<EditText
...
android:textIsSelectable="true"
/>
對於使用API 10及更低版本的任何人,此處提供了hack: https : //stackoverflow.com/a/20173020/7550472
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.