如何在Redmi Note 12 Pro设备中禁用Xamarin表单输入控件的复制/粘贴选项?

问题描述 投票:0回答:1

我想在 Xamarin 表单应用程序中禁用我的条目控件的复制/粘贴选项。我正在使用自定义渲染器。当前的解决方案适用于除 Redmi Note 8 之外的所有其他设备。这是我的渲染器代码。 class MyEntryRenderer : EntryRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Entry> e) { base.OnElementChanged(e); if (Control != null) { Control.CustomSelectionActionModeCallback = new Callback(); Control.CustomInsertionActionModeCallback = new Callback(); Console.WriteLine("CustomSelectionActionModeCallback"); Control.SetTextIsSelectable(false); Control.LongClickable = false; } } } public class Callback : Java.Lang.Object, ActionMode.ICallback { public bool OnActionItemClicked(ActionMode mode, IMenuItem item) { Console.WriteLine("OnActionItemClicked"); return true; } public bool OnCreateActionMode(ActionMode mode, IMenu menu) { Console.WriteLine("OnCreateActionMode"); menu.Clear(); return false; } public void OnDestroyActionMode(ActionMode mode) { Console.WriteLine("OnDestroyActionMode"); } public bool OnPrepareActionMode(ActionMode mode, IMenu menu) { Console.WriteLine("OnPrepareActionMode"); menu.Clear(); menu.Close(); return true; } } }

因此,
长按在 Redmi Note 8 中被禁用
,但仍然出现

蓝色点。单击它后,它仍然显示复制/粘贴选项。这种情况仅发生在 Redmi note 8 中。在我的代码中,除了 OnDestroyActionMode 之外,没有其他回调被命中,并且我无法执行 menu.Clear。在其他设备中,使用此代码会禁用该选项 Control.SetTextIsSelectable(false);

这就是它在
Redmi Note 8 设备
中的显示方式。

我引用了这些链接

,因为这个

问题与我的非常相似,但它没有帮助。 禁用 EditText 上下文菜单

EditText:禁用文本选择处理程序单击事件上的粘贴/替换菜单弹出窗口

如图所示,设备中显示粘贴选项

。我不知道如何修复这个错误,有什么建议吗?

我为此找到了
android xamarin xamarin.forms miui redmi-device
1个回答
1
投票
。一是

清除剪贴板,二是将输入的变体设置为可见密码。这两种解决方案都符合我的目的。要清除剪贴板,您可以在渲染器中使用以下代码 var clipboardManager = (ClipboardManager)Forms.Context.GetSystemService(Context.ClipboardService); clipboardManager.ClearPrimaryClip();

对于
将输入的变化设置为可见密码
,您可以使用以下代码

Control.InputType = Android.Text.InputTypes.ClassText | Android.Text.InputTypes.TextVariationVisiblePassword;

所以这些是对我有用的解决方案。
    

© www.soinside.com 2019 - 2024. All rights reserved.