gpt4 book ai didi

android - 在 Textview 项目上同时拥有 onLongPress 菜单和选择复制文本?

转载 作者:行者123 更新时间:2023-11-29 00:53:25 28 4
gpt4 key购买 nike

我的应用程序包含一个带有 TextView 项目的 RecyclerView。在每个 TextView 项目上,我都定义了一些功能,比如将文本共享到另一个应用程序。

如何将 onLongPress 或 onCreateContextMenu 与(启用)选择和复制文本结合起来?可以从上下文菜单中启用选择和复制文本。

当然我可以使用选择文本。但这与 textview 项目上的长按(上下文)菜单冲突

<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。
  • 允许其中一个手势切换到文本选择模式。见下文。

如何以编程方式设置 textSelection?

  • 将 textIsSelectable、focusable、longPressable 设置为 true
  • 将 onTouchListener 设置为空。
  • 在 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;

关于android - 在 Textview 项目上同时拥有 onLongPress 菜单和选择复制文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57324547/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com