表单:点击后错误的按钮文本对齐(Android)
我对Android(Nexus5)上的Xamarin.Forms(1.2.2版)有一个问题。 执行单击后,表单:点击后错误的按钮文本对齐(Android),android,layout,alignment,xamarin.forms,Android,Layout,Alignment,Xamarin.forms,我对Android(Nexus5)上的Xamarin.Forms(1.2.2版)有一个问题。 执行单击后,按钮的对齐。文本通常不居中 在一个简短的项目中,我发现更新UI会导致问题 public class App { public static Page GetMainPage() { var label = new Label { Text = "label", }; var buttonBad =
按钮的对齐。文本
通常不居中
在一个简短的项目中,我发现更新UI会导致问题
public class App
{
public static Page GetMainPage()
{
var label = new Label {
Text = "label",
};
var buttonBad = new Button {
Text = "buttonBad",
Command = new Command(() => label.Text += "1"),
};
var buttonGood = new Button {
Text = "buttonGood",
};
return new ContentPage {
Content = new StackLayout {
Children = {
buttonBad,
buttonGood,
label,
}
}
};
}
}
单击“buttonBad”(更新标签.Text
)会导致此按钮的文本对齐不再居中。单击“buttonGood”不会导致问题
public class App
{
public static Page GetMainPage()
{
var label = new Label {
Text = "label",
};
var buttonBad = new Button {
Text = "buttonBad",
Command = new Command(() => label.Text += "1"),
};
var buttonGood = new Button {
Text = "buttonGood",
};
return new ContentPage {
Content = new StackLayout {
Children = {
buttonBad,
buttonGood,
label,
}
}
};
}
}
有解决这个问题的好办法吗
这个解决方案似乎太复杂了:
编辑:
用户界面的编程编辑也会导致错误。在短时间等待后以异步方法更改label.Text
,会导致“buttonGood”在单击后将其文本对齐错误
edit2:
我在GitHub上创建了一个示例/测试项目:
当StackLayout被AbsoluteLayout替换时,对齐是正确的,但我需要StackLayout正常工作。好的,在处理了几个小时这个愚蠢的错误后,我通过实现自定义渲染器并覆盖
ChildDrawableStateChanged
解决了它:
public override void ChildDrawableStateChanged(Android.Views.View child)
{
base.ChildDrawableStateChanged(child);
Control.Text = Control.Text;
}
请注意,在第一次单击“坏按钮”之前,单击“好按钮”仅在不重新对齐的情况下有效。即使在1.2.3-prerelease 4中仍然存在。此处的问题相同。希望它很快得到修复。下面是1.2.3版本中目前仍存在的一个讨论:\n这只是一个疯狂有趣的事实:设置
HeightRequest=20
(或类似值)和VerticalOptions=LayoutOptions。这两个按钮的FillAndExpand
,即使有此修复(在XF 1.2.3上测试),也会使标题再次跳转。但我猜这是一个不太可能的星座。你是作为按钮的自定义渲染器编写的吗?嗨@LucasMouraVeloso是的,我将其作为渲染器实现,以应用于应用程序中的所有按钮