我想为TextView启用标准复制粘贴(与EditText相同).我该怎么做?
我尝试使用不可编辑的EditText但它运行不正常(有时它变得可编辑或者没有显示复制粘贴叠加).而且一般来说这可能不是一个好方法.
需要从API 7开始的工作解决方案.
我有一个应用程序,我希望能够显示一个TextView(或EditText),允许用户选择一些文本,然后按一个按钮,用该文本完成一些事情.在Honeycomb之前的Android版本上实现此功能是没有问题的,但在Honeycomb及以上默认的长按操作是显示带有复制/剪切/粘贴选项的操作栏.我可以拦截长按以显示我自己的操作栏,但后来我没有显示文本选择句柄.
一旦我开始自己的ActionMode,我如何显示文本选择句柄?
这是我用来启动ActionMode的代码,除了没有显示文本选择句柄外,它可以正常工作:
public boolean onLongClick(View v) {
if(actionMode == null)
actionMode = startActionMode(new QuoteCallback());
return true;
}
class QuoteCallback implements ActionMode.Callback {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.quote, menu);
return true;
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch(item.getItemId()) {
case R.id.quote:
Log.d(TAG, "Selected menu");
mode.finish();
// here is where I would grab the selected text
return true;
}
return false;
} …Run Code Online (Sandbox Code Playgroud) 我正在使用 PopupWindow 从用户那里获取一些数据。令人惊讶的是,我无法在 EditText 布局中选择文本,这是要求,因为我希望用户能够(从任何地方)复制并粘贴到此处。我已经明确用于android:textIsSelectable="true"我的 EditText。这是我用于 EditText 的属性。
<EditText
android:layout_width="match_parent"
android:layout_height="48dp"
android:id="@+id/emailEdit"
android:inputType="textEmailAddress"
android:textIsSelectable="true"
android:drawableLeft="@drawable/email"
android:drawablePadding="16dp"
android:layout_margin="@dimen/actionable_horizontal_margin"
android:singleLine="true"
android:hint="Email"
/>
Run Code Online (Sandbox Code Playgroud)
我也在设置popup.setFocusable(true)。还有什么需要做的吗?
我的复制粘贴适用于活动和片段中的其他 EditText。
PS 我不想使用自定义剪贴板操作。