You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI:如何实现非只读但获焦不唤起键盘的Entry

实现获焦不唤起虚拟键盘的非只读Entry控件

完全可行,针对不同平台可以通过自定义控件或Handler来实现需求,以下是具体方案:

Android 平台(原生/Xamarin/MAUI)

  • 核心思路是拦截系统唤起虚拟键盘的逻辑,同时保留物理键盘输入和控件的可编辑状态。
  • 原生Android自定义EditText示例:
public class NoKeyboardEditText extends EditText {
    public NoKeyboardEditText(Context context) {
        super(context);
        init();
    }

    public NoKeyboardEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init() {
        // 禁用虚拟键盘唤起
        setInputType(InputType.TYPE_NULL);
        // 保留物理键盘输入支持
        setRawInputType(InputType.TYPE_CLASS_TEXT);
        // 确保控件可获焦、可编辑
        setFocusableInTouchMode(true);
        setFocusable(true);
        setEnabled(true);
    }

    @Override
    public boolean onCheckIsTextEditor() {
        // 告知系统该控件不是标准文本编辑器,避免触发键盘
        return false;
    }
}
  • MAUI 自定义Handler示例:
public class NoKeyboardEntryHandler : EntryHandler
{
    protected override void ConnectHandler(Android.Widget.EditText platformView)
    {
        base.ConnectHandler(platformView);
        platformView.InputType = Android.Text.InputTypes.Null;
        platformView.SetRawInputType(Android.Text.InputTypes.ClassText);
    }
}

注册Handler到MauiProgram:

builder.ConfigureMauiHandlers(handlers =>
{
    handlers.AddHandler<Entry, NoKeyboardEntryHandler>();
});

iOS 平台(Xamarin/MAUI)

  • 通过替换系统键盘为空白视图来禁用虚拟键盘,同时保留物理键盘输入能力。
  • MAUI 自定义Handler示例:
public class NoKeyboardEntryHandler : EntryHandler
{
    protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);
        if (Control != null)
        {
            // 用空白视图替换系统键盘
            Control.InputView = new UIKit.UIView();
            // 确保物理键盘输入正常
            Control.AutocorrectionType = UIKit.UITextAutocorrectionType.No;
        }
    }
}

同样在MauiProgram中注册该Handler即可生效。

通用注意事项

  • 确保Entry控件的IsReadOnly设为false、IsEnabled设为true,维持非只读状态。
  • 二维码解析后的文本可直接赋值给Entry的Text属性,物理键盘输入会自动响应。
  • 需在目标特殊设备上验证功能,确保物理键盘输入和二维码赋值均正常工作。

内容的提问来源于stack exchange,提问作者Anxo Gómez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:05:07