设置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
相关产品推荐
相关产品推荐

