답변:
xml 속성 android:cursorVisible="false"
또는 java 함수를 사용할 수 있습니다 setCursorVisible(false)
.
목표를 향한 완벽한 솔루션
목표 : EditText
초점이 맞지 않으면 깜박이는 커서를 비활성화하고 초점이 맞으면 깜박이는 커서를 활성화하십시오 EditText
. 아래를 EditText
클릭하면 키보드가 열리고 키보드 에서 완료를 누르면 키보드가 숨겨집니다.
1) XML 아래에 설정하십시오 EditText
:
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;
}
});
프로그래밍 방식으로 텍스트 편집 커서를 활성화 및 비활성화하기 위해 다음 코드를 사용할 수 있습니다.
커서를 활성화하려면
editText.requestFocus();
editText.setCursorVisible(true);
커서를 비활성화하려면
editText.setCursorVisible(false);
XML 활성화 비활성화 커서 사용
android:cursorVisible="false/true"
android:focusable="false/true"
edit_text를 선택 가능하게하려면 (복사 / 잘라 내기 / 붙여 넣기 / 선택 / 모두 선택)
editText.setTextIsSelectable(true);
터치 모드에 집중하려면 XML로 다음 줄을 작성하십시오.
android:focusableInTouchMode="true"
android:clickable="true"
android:focusable="true"
프로그래밍 방식으로
editText.requestFocusFromTouch();
터치 모드에 초점을 맞추려면
editText.clearFocus()
커서 가시성을 true 및 false로 설정하는 데 문제가있는 경우 커서를 다시 설정할 때까지 커서를 제거하고 동시에 필드를 편집 할 수있어 사용자 경험이 좋지 않은 문제 일 수 있습니다.
그래서 대신에
setCursorVisible(false)
그냥 이렇게 해
editText2.setFocusableInTouchMode(false)
editText2.clearFocus()
editText2.setFocusableInTouchMode(true)
위의 코드는 포커스를 제거하고 커서를 제거합니다. 다시 터치하면 편집 할 수 있도록 다시 활성화합니다. 일반적인 사용자 경험과 같습니다.
필자의 경우 편집에 초점을 맞출 때 커서를 활성화 / 비활성화하려고했습니다.
당신의 활동에서 :
@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);
}
edit.setCursorVisible(!isKeyboardOpen);
것으로 edit.setCursorVisible(isKeyboardOpen);
키보드가있는 경우 커서가 볼 수 있도록.
이 레이아웃을 부모 레이아웃에 간단히 추가하십시오.
<?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>
당신은을 무시하려면 Edittext
활동의 시작, android:focusable
그리고 android:focusableInTouchMode
당신을 알라 신의 뜻 도움이 될 것입니다.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout7" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true" android:focusableInTouchMode="true">
이것
LinearLayout
으로Edittext
.