android - 如何在 Redmi note 8 设备中禁用 Xamarin 表单条目控制的复制/粘贴选项?

标签 android xamarin xamarin.forms miui redmi-device

我要禁用复制/粘贴选项我的入口控制在 Xamarin 表单应用程序中。我正在使用 自定义渲染器 为了那个原因。当前的解决方案适用于除 之外的所有其他设备。红米 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);
这就是它在 中的显示方式红米 Note 8 设备 .
enter image description here
我已经提到了这些 友情链接 因为这个 问题与我的 非常相似但这没有帮助。
Disable EditText context menu
EditText: Disable Paste/Replace menu pop-up on Text Selection Handler click event
正如您在图片中看到的 粘贴选项显示在设备中 .我不知道如何修复这个错误有什么建议吗?

最佳答案

我找到了两种解决方案为了这。一种是清除剪贴板其他是 将输入的变化设置为可见密码 .这两种解决方案都符合我的目的。对于 清除剪贴板您可以在渲染器中使用以下代码

var clipboardManager = (ClipboardManager)Forms.Context.GetSystemService(Context.ClipboardService);
clipboardManager.ClearPrimaryClip();
对于 将输入的变化设置为可见密码您可以使用以下代码
Control.InputType = Android.Text.InputTypes.ClassText | Android.Text.InputTypes.TextVariationVisiblePassword;
所以这些是对我有用的解决方案。

关于android - 如何在 Redmi note 8 设备中禁用 Xamarin 表单条目控制的复制/粘贴选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68528016/

相关文章:

android - 我可以为任何应用程序的所有布局使用 Activity 吗?

android - xamarin android DatePickerDialog 设置迷你日期

c# - 如何使用 OxyPlot 在 Xamarin.Forms 可移植应用程序中创建图表?

android - 如何在Google Maps Android上 “increase” VisibleRegion的大小

android - 仅创建一个 Service 实例 (Android)

c# - 在 Xamarin Android 项目上使用 glTF C# 加载器

c# - GetAllWithChildren() 性能问题

xaml - Xamarin Xaml 将 2 个以上属性绑定(bind)到 TextCell

c# xamarin forms - 具有属性的自定义控件上的自定义事件

android - 检测 toast 消息