禁用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()