当页面返回到时,Xamarin标签丢失文本对齐

当页面返回到时,Xamarin标签丢失文本对齐,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我在堆栈布局中有一个标签。它的HorizontalTextAlignment设置为TextAlignment.Center。它在页面的初始加载时正常工作,并且当选择新值时-但是当页面离开然后返回时,它将失去对齐。这只是Android上的问题,而不是iOS上的问题。我希望下面的图片能帮助说明我的观点。这是唯一影响标签对齐方式的代码,除了它只是通过绑定更改其文本,但我不知道这会如何更改其对齐方式。有什么想法吗?谢谢 StackLayout durationLayout=新的StackLayout{

我在堆栈布局中有一个标签。它的
HorizontalTextAlignment
设置为
TextAlignment.Center
。它在页面的初始加载时正常工作,并且当选择新值时-但是当页面离开然后返回时,它将失去对齐。这只是Android上的问题,而不是iOS上的问题。我希望下面的图片能帮助说明我的观点。这是唯一影响标签对齐方式的代码,除了它只是通过绑定更改其文本,但我不知道这会如何更改其对齐方式。有什么想法吗?谢谢

StackLayout durationLayout=新的StackLayout{
方向=堆叠方向。垂直,
WidthRequest=(App.ScreenDpWidth/3)-(GMStyle.Margin.PageMargin.Left*2),
垂直选项=布局选项。中心,
余量=新厚度(0,5,0,0),
水平选项=布局选项。开始
};
durationLabel=新标签{
Style=(Style)Application.Current.Resources[“DurationLabelStyle”],
HorizontalTextAlignment=TextAlignment.Center,
//VerticalTextAlignment=TextAlignment.Center,
};
durationLabel.SetBinding(Label.TextProperty,“DurationDisplay”);
durationLayout.Children.Add(timeSpanPicker);
durationLayout.Children.Add(durationLabel);
durationLayout.GestureRecognitors.Add(timeSpanTap);

这是Xamarin形式中的一个bug,我相信它出现在2.3.3或2.3.4中,在2.3.2中运行良好。我还不知道有任何针对它的bug报告,这是我能找到的最接近的,可能是相关的


作为一种解决方法,您可以使用
horizontalpoptions=LayoutOptions.CenterAndExpand
而不是
HorizontalTextAlignment

这是xamarin表单的缺陷。您必须创建标签的自定义渲染器,而不是刷新其子级可绘制状态,希望它能正常工作

public override void ChildDrawableStateChanged(Android.Views.View child)
{
   base.ChildDrawableStateChanged(child);
   Control.Text = Control.Text;
}

我在正在开发的一个应用程序中注意到了这个问题,但仅在Emulator(Android)上。在真实设备上,它不会出现。仿真器是安卓7。设备是4.x…可能是牛轧糖上的一个bug,它显示在我运行7.1.1I的物理设备上,我将部署到实际设备上,看看问题是否仍然存在。您是否使用选项卡式页面导航?我正在部署到实际设备。我正在使用一个自定义选项卡页面。但如果你用tab键跳出并返回应用程序,就会发生这种情况。或者更改任何页面,无论是到另一个选项卡页面还是在堆栈中添加页面。我只是在另一个物理设备上运行我的应用程序(运行6.0)…它运行正常。我猜这是安卓7.0+的一个bug。我发现当我用
HorizontalOptions=CenterAndExpand
替换
HorizontalTextAlignment=Center
时,这个问题仍然存在;但是当我把它们都包括进来时,文本总是居中显示。