【发布时间】:2017-11-30 16:17:34
【问题描述】:
我在 textview 上使用 textIsSelectable 属性,它允许用户复制 textview 的文本。现在,当我长按 textview 时,菜单有复制、全选翻译和共享选项。我不想在那个菜单中翻译和分享选项..
我正在使用 xamarin 进行开发,请帮助我.. 在此先感谢..
【问题讨论】:
我在 textview 上使用 textIsSelectable 属性,它允许用户复制 textview 的文本。现在,当我长按 textview 时,菜单有复制、全选翻译和共享选项。我不想在那个菜单中翻译和分享选项..
我正在使用 xamarin 进行开发,请帮助我.. 在此先感谢..
【问题讨论】:
删除共享选项,您可以使用:
public override void OnActionModeStarted(ActionMode mode)
{
IMenu menu = mode.Menu;
menu.RemoveItem(Android.Resource.Id.ShareText);
base.OnActionModeStarted(mode);
}
但我找不到翻译 ID,作为替代选择,您可以自定义 ContextMenu:
public override void OnCreateContextMenu(IContextMenu menu, View v, IContextMenuContextMenuInfo menuInfo)
{
base.OnCreateContextMenu(menu, v, menuInfo);
MenuInflater.Inflate(Resource.Menu.cmenu, menu);
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/select_all"
android:title="select all"
/>
<item android:id="@+id/copy"
android:title="copy"
/>
</menu>
当你点击菜单项时:
public override bool OnContextItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.select_all:
//Select All the TextView text
return true;
case Resource.Id.copy:
ClipboardManager clipboard = (ClipboardManager)GetSystemService(ClipboardService);
clipboard.Text = myTextView.Text;
return true;
default:
return base.OnContextItemSelected(item);
}
}
【讨论】: