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 » 19 Aug 2025, 09:02
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ü
1755586976
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]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 } } } [/code] So verwende ich das Kontextmenü
0 Replies
0 Views
Last post by Anonymous
19 Aug 2025, 09:02
0 Replies
32 Views
Last post by Anonymous
22 Dec 2024, 06:58
0 Replies
40 Views
Last post by Guest
22 Dec 2024, 07:35
0 Replies
20 Views
Last post by Anonymous
03 Mar 2025, 23:03
0 Replies
15 Views
Last post by Anonymous
04 Mar 2025, 04:15