EditText 깜박이는 커서 사용 안 함
화면에서 깜박이는 커서를 비활성화하는 방법을 아는 사람이 있습니까?EditText
보기?
xml 속성을 사용할 수 있습니다.android:cursorVisible="false"
또는 프로그래밍 방식으로:
- java:
view.setCursorVisible(false)
- 코틀린:
view.isCursorVisible = false
목표를 향해 한 단계 더 나아가는 완벽한 솔루션
목표: 다음과 같은 경우 깜박이는 커서를 비활성화합니다.EditText
초점이 맞지 않으며 다음과 같은 경우 깜박이는 커서를 활성화합니다.EditText
초점을 맞추고 있습니다.아래는 또한 키보드를 엽니다.EditText
를 클릭하고 키보드에서 완료를 누르면 숨깁니다.
1) 아래 xml을 입력합니다.EditText
:
android:cursorVisible="false"
2) ClickListener에서 설정:
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()
simple 이 선을 부모 레이아웃에 추가합니다.
<?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>
커서 가시성을 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);
}
root 레이아웃에서 Android:focusableInTouchMode="true"를 추가합니다. 이때 편집 텍스트를 클릭하면 커서가 표시됩니다.
만약 당신이 무시하고 싶다면,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
.
다음을 사용하여 포커스를 다른 뷰(예: XML의 임의 텍스트 뷰 또는 선형 레이아웃)로 변경합니다.
android:focusableInTouchMode="true" android:focusable="true"
활동에서 텍스트를 편집하려면 addTextChangedListener를 설정합니다.
텍스트를 바꾼 후에 텍스트를 편집합니다.
edittext.clearFocus()
;
이렇게 하면 키보드가 열려 있으면 커서가 활성화되고 키보드가 닫혀 있으면 비활성화됩니다.
kotlin your_edittext.isCursorVisible = false에서
루트 레이아웃.findFocus().clearFocus();
언급URL : https://stackoverflow.com/questions/5582702/disable-edittext-blinking-cursor
'programing' 카테고리의 다른 글
java.sql.SQL 비일시적 연결Maria에게 데이터 프레임을 쓰는 동안 예외가 발생했습니다.DB (0) | 2023.09.06 |
---|---|
PHPMyAdmin 데이터베이스 연결 오류 (0) | 2023.09.06 |
날짜로부터 두 개의 mariadb 데이터베이스를 동기화하려면 어떻게 해야 합니까? (0) | 2023.09.06 |
두 개의 포맷 문자열이 호환되는지 확인하는 방법은? (0) | 2023.09.06 |
MySQL/MariaDB 오류가 발생하도록 경고 구성 (0) | 2023.09.06 |