Xamarin Grid内嵌按钮点击异常:底部按钮仅上半区域可触发点击事件
问题根因
你遇到的点击异常是子控件溢出父容器裁剪范围导致的:
- 外层Grid的第3行(放置按钮的行)设置了固定高度
260 - 内部承载4个按钮的子Grid的行高总和为
10+125+40+125=300,比父行高度多出40 - Xamarin.Forms中默认超出父容器裁剪范围的控件区域不会接收触摸事件,刚好对应底部两个按钮的下半部分,完全匹配你描述的故障表现
另外你的代码里还有一处冗余代码:重复声明了两个Grid.Row="1"的StackLayout,其中第一个是空的无意义节点。
修复方案
- 修改外层Grid第3行的高度配置,要么改成自适应内容,要么调整为足够容纳子控件的固定高度:
<!-- 方案1:自适应高度,推荐 --> <RowDefinition Height="Auto"/> <!-- 方案2:固定高度设为300及以上 --> <RowDefinition Height="300"/>
- 删除冗余的空StackLayout节点:
<!-- 删掉这一行无用代码 --> <StackLayout Grid.Row="1" />
后续排查技巧
再遇到类似触控不响应的布局问题,可以临时给各个层级的容器设置不同的背景色,就能快速定位是否存在控件溢出、遮挡的情况。
内容的提问来源于stack exchange,提问作者ShaneGibson
相关产品推荐
相关产品推荐

