EditText 깜박임 커서 비활성화 커서를 비활성화하는 방법을 알고

누구나 EditText보기 에서 깜박이는 커서를 비활성화하는 방법을 알고 있습니까?



답변

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);
}


답변

이 레이아웃을 부모 레이아웃에 간단히 추가하십시오.

<?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.