【问题标题】:How can i display a toast message in the clipboard copy option click in android如何在剪贴板复制选项中显示 toast 消息单击 android
【发布时间】:2016-02-28 19:40:33
【问题描述】:

在我的片段中,我使用了一种布局。在那,对于一个文本视图,我需要提供复制选项。

<TextView
                    android:id="@+id/txtShareWinurl"
                    style="@style/matchWidth"
                    android:layout_height="@dimen/dimen_fifty"
                    android:layout_gravity="center"
                    android:layout_margin="@dimen/dimen_ten"
                    android:background="@drawable/verylight_gray_bg_border"
                    android:gravity="center"
                    android:padding="@dimen/dimen_five"
                    android:text="@string/app_name"
                    android:textColor="@color/gray_code"
                    android:textSize="@dimen/dimen_fifteen"
                    android:textIsSelectable="true"
                    android:textStyle="bold" />

因为我使用了textIsSelectable,而不是获得了带有复制和全选选项的窗口。但是,当我单击该选项时,我需要显示敬酒。请帮我。

我尝试搜索一些链接,但没有成功。

【问题讨论】:

  • 过去你调用 Toast 的代码
  • 添加 textIsSelectable 后,如果我长按我得到剪贴板。如果我按下复制选项,我需要显示 toast。

标签: android copy clipboard copy-paste toast


【解决方案1】:

签出this

您可以覆盖 ClipboardManager 的 onPrimaryClipChanged() Listner

【讨论】:

    【解决方案2】:

    我知道的唯一方法是使用ActionMode.Callback 接口

    private class ActionModeCallbackWrapper implements ActionMode.Callback {
        private final ActionMode.Callback wrapped;
    
        private ActionModeCallbackWrapper(ActionMode.Callback wrapped) {
            this.wrapped = wrapped;
        }
    
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            return wrapped.onCreateActionMode(mode, menu);
        }
    
        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return wrapped.onPrepareActionMode(mode, menu);
        }
    
        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            return wrapped.onActionItemClicked(mode, item);
        }
    
        @Override
        public void onDestroyActionMode(ActionMode mode) {
            wrapped.onDestroyActionMode(mode);
        }
    }
    

    并在您的视图中使用它,如下所示 (docs)

    @Override
    public ActionMode startActionMode(ActionMode.Callback callback) {
        mActionMode = super.startActionMode(new ActionModeCallbackWrapper(callback));
        return mActionMode;
    }
    

    因此您可以检测 onActionItemClicked 事件并显示 toast 或任何您想要的内容

    【讨论】:

      【解决方案3】:

      这取决于您的场景,但您可以使用 ClipboardManager 检测剪贴板更改:

      ClipbardManager Documenation

      示例代码:

      ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
      clipboardManager.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
          @Override
          public void onPrimaryClipChanged() {
              Toast.makeText(MainActivity.this, "Content changed", Toast.LENGTH_LONG).show();
          }
      });
      

      【讨论】:

      • 能否提供任何检测剪贴板管理器的链接。
      猜你喜欢
      • 2020-07-20
      • 2020-12-09
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 2011-12-09
      相关资源
      最近更新 更多