【发布时间】:2022-01-21 01:48:14
【问题描述】:
总结
我想更好地控制 Xamarin.Forms 中按钮上的文本呈现,因此我使用了一个包含标签和按钮对象的 Grid。这让我可以更好地控制文本,但它的副作用是在单击 Button 时将 Label 移动到 Button 后面。
为什么会这样? UI的顺序不应该由子级添加到Grid的Children中的顺序来决定吗?
详情
我创建了以下代码来单独测试问题:
// The grid can be added directly to a page
var grid = new Grid();
grid.Margin = new Thickness(100, 100);
grid.WidthRequest = 200;
grid.HeightRequest = 200;
var button = new Button();
button.WidthRequest = 80;
button.HorizontalOptions = LayoutOptions.Start;
button.VerticalOptions = LayoutOptions.Fill;
grid.Children.Add(button);
var label = new Label();
label.Text = "This is some text";
label.VerticalOptions = LayoutOptions.Fill;
label.InputTransparent = true;
grid.Children.Add(label);
按钮的大小使其仅与部分文本重叠,以便清楚地看到按钮移动到标签前面。
在点击按钮之前,布局显示如下:
点击后,按钮移动到标签前,如下图所示:
我可以让文本有一个点击手势,但是按钮在被触摸时不会播放它的原生效果,所以我想通过点击按钮来保留这个功能。
有没有办法让标签在点击后保持在按钮前面?
编辑
已在运行 Android 10 的摩托罗拉 Moto G7 和运行 Android 9 的模拟器上进行了测试。
请注意,在 Android 硬件上,标签永久保留在按钮后面。在模拟器上,当按下按钮时标签会移动到按钮后面,但在释放按钮后会重新出现在顶部。
【问题讨论】:
-
我在 Android 11.0 上运行了您的代码,但无法重现该问题
-
你在模拟器上测试吗?电脑还是mac?或者如果在物理设备上,是哪个型号?
标签: button xamarin.forms xamarin.android