[Android] TextView에서 textIsSelectable 이 동작하지 않는 현상

1. TextView 내의 글자 선택하기

xml내에서 textIsSelectabletrue로 설정해준다.

<TextView
  android:id="@+id/text"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:textIsSelectable="true"
  android:text="Hello World!" />

java코드에서 setTextIsSelectabletrue로 설정 해준다.

mTextView.setTextIsSelectable(true);

위 두가지 중 한가지만 적용해주면 TextView의 글자를 선택해 복사 할 수 있다.

2. ListView(RecyclerView) 에서의 이슈

QA를 하던 중 TextView의 글자를 선택할 수 없다는 말을 들었다. 처음에는 롱클릭이 잘 되지만, 스크롤을 내리면 텍스트를 선택할 수 없다는 것이었다.

3. 해결방법

TextView를 상속받아서 View가 attach되는 시점에 disable -> enable을 시켜주면 해결 된다.

(http://stackoverflow.com/a/38626276)

@Override
protected void onAttachedToWindow() {
    super.onAttachedToWindow();
    if (isTextSelectable()) {
        // text selection is not working
        // http://stackoverflow.com/a/38626276
        boolean enabled = isEnabled();
        if (enabled) {
            setEnabled(false);
            setEnabled(true);
        }
    }
}