Vic*_*Vic 338
您可以使用xml属性android:cursorVisible="false"或java函数setCursorVisible(false).
coo*_*994 33
完美的解决方案,进一步实现目标
目标:当EditText焦点不清晰时禁用闪烁光标,并在焦点对准时启用闪烁光标EditText.EditText单击下方时也会打开键盘,并在键盘上按完后隐藏键盘.
1)在您的xml下设置EditText:
android:cursorVisible="false"
Run Code Online (Sandbox Code Playgroud)
2)设置onClickListener:
iEditText.setOnClickListener(editTextClickListener);
OnClickListener editTextClickListener = new OnClickListener()
{
public void onClick(View v)
{
if (v.getId() == iEditText.getId())
{
iEditText.setCursorVisible(true);
}
}
};
Run Code Online (Sandbox Code Playgroud)
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;
}
});
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码通过编程来启用和禁用编辑文本光标。
启用光标
editText.requestFocus();
editText.setCursorVisible(true);
Run Code Online (Sandbox Code Playgroud)
禁用光标
editText.setCursorVisible(false);
Run Code Online (Sandbox Code Playgroud)
使用XML启用禁用游标
android:cursorVisible="false/true"
android:focusable="false/true"
Run Code Online (Sandbox Code Playgroud)
使edit_text可以选择(复制/剪切/粘贴/选择/全选)
editText.setTextIsSelectable(true);
Run Code Online (Sandbox Code Playgroud)
要专注于触摸模式,请在XML中编写以下几行
android:focusableInTouchMode="true"
android:clickable="true"
android:focusable="true"
Run Code Online (Sandbox Code Playgroud)
以编程方式
editText.requestFocusFromTouch();
Run Code Online (Sandbox Code Playgroud)
清除对触摸模式的关注
editText.clearFocus()
Run Code Online (Sandbox Code Playgroud)
简单地将这一行添加到您的父布局中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true">
<EditText
android:inputType="text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
将光标可见性设置为 true 和 false 的问题可能是一个问题,因为它会删除光标,直到您再次设置它,同时字段是可编辑的,这不是良好的用户体验。
所以而不是使用
setCursorVisible(false)
Run Code Online (Sandbox Code Playgroud)
就这样做
editText2.setFocusableInTouchMode(false)
editText2.clearFocus()
editText2.setFocusableInTouchMode(true)
Run Code Online (Sandbox Code Playgroud)
上面的代码删除了焦点,进而删除了光标。并再次启用它,以便您可以再次触摸它并能够编辑它。就像正常的用户体验一样。
| 归档时间: |
|
| 查看次数: |
109973 次 |
| 最近记录: |