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

设置Entry的ReturnType为Done后Android键盘无法关闭问题求助

Android平台Entry控件Done按钮无法关闭键盘的解决方案

在.NET MAUI中,将Entry控件的ReturnType属性设置为"Done"后,iOS平台点击Done按钮会自动关闭键盘,但Android平台无此默认行为,需要手动处理。

解决方法

1. 直接绑定Completed事件(代码后台方式)

在XAML中为Entry添加Completed事件绑定:

<Entry ReturnType="Done" Completed="Entry_Completed" />

在对应的代码后台实现事件处理逻辑,调用Unfocus()方法关闭键盘:

private void Entry_Completed(object sender, EventArgs e)
{
    (sender as Entry)?.Unfocus();
}

2. 使用行为封装(MVVM友好,可复用)

创建一个自定义行为类,封装关闭键盘的逻辑:

public class CloseKeyboardOnCompletedBehavior : Behavior<Entry>
{
    protected override void OnAttachedTo(Entry entry)
    {
        base.OnAttachedTo(entry);
        entry.Completed += OnEntryCompleted;
    }

    protected override void OnDetachingFrom(Entry entry)
    {
        base.OnDetachingFrom(entry);
        entry.Completed -= OnEntryCompleted;
    }

    private void OnEntryCompleted(object sender, EventArgs e)
    {
        (sender as Entry)?.Unfocus();
    }
}

在XAML中引用该行为(注意替换local为你的项目命名空间):

<Entry ReturnType="Done">
    <Entry.Behaviors>
        <local:CloseKeyboardOnCompletedBehavior />
    </Entry.Behaviors>
</Entry>

原因说明

Android平台的系统软键盘不会自动响应Done按钮来让输入框失去焦点,必须通过主动调用Unfocus()方法让Entry控件失去焦点,才能触发键盘关闭;而iOS平台对此有默认的系统级处理,无需额外代码。

内容的提问来源于stack exchange,提问作者Phuluso Ramulifho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:05:24