Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表单:点击后错误的按钮文本对齐(Android)_Android_Layout_Alignment_Xamarin.forms - Fatal编程技术网

表单:点击后错误的按钮文本对齐(Android)

表单:点击后错误的按钮文本对齐(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 =

我对Android(Nexus5)上的Xamarin.Forms(1.2.2版)有一个问题。 执行单击后,
按钮的对齐。文本
通常不居中

在一个简短的项目中,我发现更新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是的,我将其作为渲染器实现,以应用于应用程序中的所有按钮