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

Xamarin Forms中浮动搜索Entry无法获取输入的问题求助

解决思路与修复方案

核心问题定位

你当前布局中StackLayout的InputTransparent="True"是导致搜索框无法获取焦点的关键原因——这个属性会让StackLayout及其所有子控件透传触摸事件到底层的Map控件,因此CustomEntry无法接收用户的点击和输入操作。

分步修复

  • 修正StackLayout的交互属性
    将包含搜索框的StackLayout的InputTransparent改为False(或直接删除该属性,默认值即为False):

    <StackLayout Grid.Row="0" Grid.Column="0" InputTransparent="False">
        <!-- 原Frame及内部控件代码保持不变 -->
    </StackLayout>
    
  • 排查自定义控件问题
    如果修复后仍无法获取焦点,临时将controls:CustomEntry替换为原生Entry进行测试:

    <Entry
        x:Name="entrySearch"
        Grid.Row="0"
        Grid.Column="1"
        FontSize="14"
        HeightRequest="35"
        HorizontalOptions="FillAndExpand"
        HorizontalTextAlignment="Start"
        Keyboard="Text"
        Placeholder="¿Qué se te antoja hoy?"
        PlaceholderColor="#979797"
        ReturnCommand="{Binding SearchCommand}"
        ReturnType="Search"
        Text="{Binding SearchText}"
        TextChanged="entrySearch_TextChanged"
        VerticalOptions="FillAndExpand"
        VerticalTextAlignment="Center" />
    

    若原生Entry可正常聚焦,说明问题出在CustomEntry的自定义逻辑中(例如渲染器拦截了触摸事件、重写Focus方法时出现错误),需检查CustomEntry的代码实现。

  • 验证布局层级与触控区域
    给StackLayout添加临时背景色(如BackgroundColor="Red"),确认搜索框所在区域确实覆盖在Map上方,没有因布局偏移导致触控点未落在Entry控件上。

  • 清理冗余属性
    外层Grid的InputTransparent="False"是默认值,可直接删除;确保Frame的IsEnabled属性为True(默认值),避免框架级别的交互禁用。

内容的提问来源于stack exchange,提问作者Enrique Mainero Salinas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:05:54