2019年6月15日土曜日

RecyclerView 内の TextView で textIsSelectable が効かない問題に対応する

TextView に android:textIsSelectable="true" を指定すると、TextView 長押しで文字列を選択するモードになります。

しかし RecyclerView 内の TextView にこの指定をしても、
"TextView does not support text selection. Selection cancelled."
というメッセージがログに出て、文字列を選択するモードになりません。
(問題は Android 5.0, 5.1 では起こりません。Android 6.0 以降では起こります。)

これは Android platform の既知のバグのようです。
https://code.google.com/p/android/issues/detail?id=208169

対象方法は、一度 TextView を disabled にしてから enabled にします。

https://issuetracker.google.com/issues/37095917#comment11
https://stackoverflow.com/questions/37566303/edittext-giving-error-textview-does-not-support-text-selection-selection-canc

class MainAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() { ... override fun onViewAttachedToWindow(holder: RecyclerView.ViewHolder) { super.onViewAttachedToWindow(holder) if (holder is ViewHolder) { holder.itemView.textView.isEnabled = false holder.itemView.textView.isEnabled = true } } }


0 件のコメント:

コメントを投稿