Xamarin.Forms:点击后错误的按钮文本对齐(Android)

时间:2014-09-26 09:40:22

标签: android layout alignment xamarin.forms

我在Android(Nexus 5)上遇到Xamarin.Forms(版本1.2.2)的问题。 执行点击后,Button.Text的对齐通常不会居中。

在一个简短的项目中,我发现,更新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" (更新label.Text)会导致此按钮的文本对齐不再居中。点击" buttonGood"不会导致问题。

有没有一个很好的解决方法来解决这个问题?

这种解决方法似乎太复杂了: http://forums.xamarin.com/discussion/20608/fix-for-button-layout-bug-on-android

修改 以编程方式编辑UI也会出现错误。在等待一小段时间后,在异步方法中更改label.Text会导致" buttonGood"单击后将其文本对齐错误。

EDIT2: 我在GitHub上创建了一个示例/测试项目: https://github.com/perpetual-mobile/ButtonTextAlignmentBug.git 当StackLayout被AbsolutLayout替换时,对齐是正确的,但我需要StackLayout才能正常工作。

1 个答案:

答案 0 :(得分:13)

好的,经过几个小时处理这个愚蠢的错误后,我通过实现自定义渲染器并覆盖ChildDrawableStateChanged来解决它:

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