Warum erscheint das Menü zum Kopieren/Einfügen von Kontext nicht, wenn ich in einem Recyclerview-Element einen langen TeAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Warum erscheint das Menü zum Kopieren/Einfügen von Kontext nicht, wenn ich in einem Recyclerview-Element einen langen Te

Post by Anonymous »

Während des Recycling- und Wiederverwendungsprozesses von Recyclerview (Elemente/Ansichten). Warum erscheint das Menü Kopieren/Einfügen nicht, wenn ich in einem Recyclerview-Element lange drücke, wenn ich Holder verwende.

Code: Select all

fun setTextCustomStyle(textView: TextView) {
val context = textView.context

textView.highlightColor = context.getColor(R.color.mj_color_black_08_transparent)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
textView.setTextSelectHandleLeft(R.drawable.text_select_handle_left_mtrl)
textView.setTextSelectHandleRight(R.drawable.text_select_handle_right_mtrl)
textView.setTextSelectHandle(R.drawable.text_select_handle_middle_mtrl)
}

textView.movementMethod = object : LinkMovementMethod() {
override fun onTouchEvent(widget: TextView, buffer: Spannable, event: MotionEvent): Boolean {
if (widget.isTextSelectable) {
super.onTouchEvent(widget, buffer, event)
}
return false
}
}

textView.customSelectionActionModeCallback = object : ActionMode.Callback {
override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
Selection.selectAll(textView.text as? Spannable)
return true
}

override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
return false
}

override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
if (item.itemId == android.R.id.copy) {
val plainText = (textView.text ?: "").subSequence(textView.selectionStart, textView.selectionEnd).toString()
val clipboardManager = context.getSystemService(ClipboardManager::class.java) as ClipboardManager
clipboardManager.apply {
val clip = ClipData.newPlainText("plainText", plainText)
setPrimaryClip(clip)
}
ToastUtil.show(R.string.already_copy)
mode.finish()
return true
}
return false
}

override fun onDestroyActionMode(mode: ActionMode?) {
if (textView is EditText) {
textView.requestFocus()
}
}
}

textView.setTextIsSelectable(true)
if (textView is EditText) {
textView.setOnLongClickListener {
if (textView.text.isNullOrEmpty() && textView.isFocused) {
textView.setSelection(0)
} else {
textView.selectAll()
}
false
}
} else {
textView.setOnLongClickListener {
false
}
}
}
So verwende ich das Kontextmenü

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post