在我的片段中,我使用了一个布局。在那里,对于一个textview,我需要提供复制选项。
<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
而不是使用copy和selectall选项的窗口。但是当我点击该选项时,我需要显示一个祝酒词。请帮我。
我尝试过谷歌一些链接,但我没有成功。
答案 0 :(得分:1)
这取决于您的场景,但您可以使用ClipboardManager检测剪贴板更改:
示例代码:
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();
}
});
答案 1 :(得分:1)
检查this
你可以覆盖ClipboardManager的onPrimaryClipChanged()Listner
答案 2 :(得分:1)
我知道的唯一方法是使用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事件并显示吐司或任何您想要的内容