禁用EditText闪烁光标
有谁知道如何禁用EditText
视图中闪烁的光标?
您可以使用xml属性android:cursorVisible="false"
或java函数setCursorVisible(false)
。
完美的解决scheme,进一步的目标
目标:在EditText
不在焦点时禁用闪烁的光标,并在EditText
处于焦点时启用闪烁的光标。 在EditText
被点击的时候,下面也会打开键盘,当你按下键盘上的键时隐藏它。
1)在您的EditText
下的xml中设置:
android:cursorVisible="false"
2)设置onClickListener:
iEditText.setOnClickListener(editTextClickListener); OnClickListener editTextClickListener = new OnClickListener() { public void onClick(View v) { if (v.getId() == iEditText.getId()) { iEditText.setCursorVisible(true); } } };
3)然后onCreate
,捕获事件时,使用OnEditorActionListener
按下你的EditText
,然后setCursorVisible(false)
。
//onCreate... iEditText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { iEditText.setCursorVisible(false); if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); in.hideSoftInputFromWindow(iEditText.getApplicationWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); } return false; } });
在我的情况下,我想在编辑重点时启用/禁用光标。
在您的活动中:
@Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View v = getCurrentFocus(); if (v instanceof EditText) { EditText edit = ((EditText) v); Rect outR = new Rect(); edit.getGlobalVisibleRect(outR); Boolean isKeyboardOpen = !outR.contains((int)ev.getRawX(), (int)ev.getRawY()); System.out.print("Is Keyboard? " + isKeyboardOpen); if (isKeyboardOpen) { System.out.print("Entro al IF"); edit.clearFocus(); InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(edit.getWindowToken(), 0); } edit.setCursorVisible(!isKeyboardOpen); } } return super.dispatchTouchEvent(ev); }
您可以使用以下代码以编程方式启用和禁用编辑文本光标。
启用游标
editText.requestFocus(); editText.setCursorVisible(true);
禁用游标
editText.setCursorVisible(false);
使用XML启用禁用游标
android:cursorVisible="false/true" android:focusable="false/true"
使edit_text可选(复制/剪切/粘贴/select/全选)
editText.setTextIsSelectable(true);
要专注于触摸模式,请在XML中写入以下行
android:focusableInTouchMode="true" android:clickable="true" android:focusable="true"
编程
editText.requestFocusFromTouch();
清除焦点在触摸模式
editText.clearFocus()