Android 是否同时具有onLongPress菜单和选择在ExtView项上复制文本?
我的应用程序包含一个包含TextView项目的RecyclerView。在每个TextView项目上,我都定义了一些功能,比如将文本共享到另一个应用程序 如何将onLongPress或onCreateContextMenu与(启用)选择和复制文本相结合?可以从关联菜单中启用“选择并复制文本” 当然,我可以使用选择文本。但该与textview项目上的长按(上下文)菜单相冲突Android 是否同时具有onLongPress菜单和选择在ExtView项上复制文本?,android,Android,我的应用程序包含一个包含TextView项目的RecyclerView。在每个TextView项目上,我都定义了一些功能,比如将文本共享到另一个应用程序 如何将onLongPress或onCreateContextMenu与(启用)选择和复制文本相结合?可以从关联菜单中启用“选择并复制文本” 当然,我可以使用选择文本。但该与textview项目上的长按(上下文)菜单相冲突 <TextView android:layout_width="wrap_content" andro
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:id="@+id/pwTextView"
android:enabled="true"
android:textIsSelectable="true" <== mandatory
android:focusable="true" <== optionally
android:longClickable="true" /> <== optionally
以下解决方案对大多数情况都有帮助
我希望文本是可选择的(用于复制和粘贴)或希望其他手势工作
最初在文本字段上设置手势:
- 在布局文件中或以编程方式将textIsSelectable设置为false李>
- 使用手势在textview上设置onTouchListener李>
- 允许其中一个手势切换到文本选择模式。见下文李>
如何以编程方式设置文本选择
- 将文本IsSelectable、focusable、longPressable设置为true
- 将onTouchListener设置为null李>
- 在textview上安装clickListener以允许您切换回原始TouchListener李>
1) 安装您的GestureHandler:
// Create your Touch Listener
onTouchListener = new OnSwipeTouchListener(mCtx, this);
view.setOnTouchListener( onTouchListener);
2) 切换到文本选择模式:
// Create your popup with an menu option to switch to textselection modus:
PopupMenu popup = new PopupMenu(mCtx, view);
popup.inflate(R.menu.text_options_menu);
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case ...
case R.id.text_textisselectable:
view.setOnTouchListener(null);
((TextView)view).setTextIsSelectable( true);
((TextView)view).setFocusable( true);
((TextView)view).setLongClickable( true);
// Install a click listener to switch back to the previous Touch Listener
((TextView)view).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupx = new PopupMenu(mCtx, view);
popupx.inflate(R.menu.selecttext_back_menu);
popupx.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
((TextView)view).setTextIsSelectable( false);
((TextView)view).setFocusable( false);
((TextView)view).setLongClickable( false);
view.setOnTouchListener(onTouchListener);
return true;
}});
popupx.show();
}
});
break;
您可以做一件事,只需按住整个项目视图即可进行设置。然后在该视图中使用特定的文本视图并对其进行操作。