【问题标题】:Xamarin.Forms: wrong button text alignment after click (Android)Xamarin.Forms:点击后按钮文本对齐错误(Android)
【发布时间】:2014-11-21 06:50:55
【问题描述】:

我对 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.2.3-prerelease 4 中仍然存在。
  • 这里有同样的问题。希望尽快修复。
  • 仍然存在于 1.2.3 版本中:\ 这简直是疯了

标签: android layout alignment xamarin.forms


【解决方案1】:

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

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

【讨论】:

  • 有趣的事实:为两个按钮设置 HeightRequest = 20(或类似值)和 VerticalOptions = LayoutOptions.FillAndExpand 会使标题再次跳转,即使使用此修复程序(在 XF 1.2.3 上测试)。但我猜这是一个不太可能的星座。
  • 你把它写成一个自定义的按钮渲染器吗?
  • 嗨@LucasMouraVeloso 是的,我将它实现为渲染器以应用于应用程序中的所有按钮
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 2011-09-19
  • 2013-06-21
  • 1970-01-01
  • 2016-11-03
  • 2013-10-20
相关资源
最近更新 更多