我看到了一些应用程序,比如gmail和其他应用程序 一个editText和textView,同时点击文本长按我可以在操作栏中看到有菜单出现说剪切,复制,全选,共享和查找选项出现。
这与开发人员想要包含在我的应用程序中的行为相同。
我怎样才能做到这一点?
答案 0 :(得分:4)
查看本教程,它将帮助您创建上下文操作栏
参考: Tutorial : Contextual Action Bar (CAB) - Android
代码: GitHub : Contextual Action Bar (CAB)
修改强>
在 EditText 布局中,添加以下属性以显示用于复制/粘贴的标准Android上下文菜单。
android:textIsSelectable.
同时检查this tutorial。
答案 1 :(得分:2)
如果您只想复制,可以在xml的textview中设置以下标记
机器人:textIsSelectable = “真”
如果您想要搜索,请分享选项,因为您必须按如下方式创建Contextual ActionBar
在您的活动中添加以下内容
ActionMode mActionMode;
你必须创建一个ActionMondeCallback接口
class ActionBarCallback implements ActionMode.Callback
{
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.contextual_menu, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
int id = item.getItemId();
if(id == R.id.item_delete)
{
tv.setText("");
Toast.makeText(MainActivity.this,"option deleted",Toast.LENGTH_LONG);
}
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
}
其中contextual_menu.xml如下所示,带有必需的图标
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.example.letschat"
>
<item
android:id="@+id/item_search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="ifRoom|withText"
android:title="Delete"
android:titleCondensed="Delete">
</item>
<item
android:id="@+id/item_delete"
android:icon="@android:drawable/ic_menu_delete"
app:showAsAction="ifRoom|withText"
android:title="Delete"
android:titleCondensed="Delete">
</item>
<item
android:id="@+id/item_share"
android:icon="@android:drawable/ic_menu_share"
app:showAsAction="ifRoom|withText"
android:title="Delete"
android:titleCondensed="Delete">
</item>
</menu>
现在启用您的Contextual ActionBar(CAB)如下所示,例如,这里是长时间点击textview启用
yourtextView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mActionMode = MainActivity.this.startActionMode(new ActionBarCallback());
return true;
}
});
然后你必须在点击CAB上的每个动作事件时编写自己的动作
有关详细信息,请按link