Xamarin Forms - 内容未在 stackLayout 中垂直居中对齐

Posted

技术标签:

【中文标题】Xamarin Forms - 内容未在 stackLayout 中垂直居中对齐【英文标题】:Xamarin Forms - Content is not getting vertically center aligned in the stackLayout 【发布时间】:2018-10-10 14:28:30 【问题描述】:

我正在尝试在 Xamarin 表单中创建自定义控件以显示警报消息。

在少数情况下,内容会垂直居中对齐,但在少数情况下会溢出框架。

能否请您告诉我需要进行哪些更改才能使内容始终垂直居中并且内容的大小会扩大。

        _alertLayout = new StackLayout
        
            Orientation = StackOrientation.Horizontal,
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand
        ;

        _alertLayoutHighlighter = new StackLayout
        
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            BackgroundColor = Constants.MMSGAlertBackgroundColor,
            Padding = 0,
            WidthRequest = 8
        ;

        _alertBoxView = new BoxView
        
            Color = Constants.MMSGAlertTextColor,
            VerticalOptions = LayoutOptions.FillAndExpand
        ;

        _alertLayoutHighlighter.Children.Add(_alertBoxView);

        _alertLayoutContent = new StackLayout
        
            Orientation = StackOrientation.Vertical,
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            Padding = new Thickness(16)
        ;

        _alertMessage = new Label
        
            TextColor = Constants.MMSGAlertTextColor,
            FontSize = 12
        ;

        _alertLayoutContent.Children.Add(_alertMessage);

        _alertLayout.Children.Add(_alertLayoutHighlighter);
        _alertLayout.Children.Add(_alertLayoutContent);

        _frame = new Frame
        
            OutlineColor = Constants.MMSGAlertBorderColor,
            BackgroundColor = Constants.MMSGAlertBackgroundColor,
            Padding = new Thickness(2, 2, 0, 2),
            HasShadow = false,
            Content = _alertLayout,
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand
        ;

        this.Content = _frame;

【问题讨论】:

红色的是自定义控件AlertView?屏幕截图未显示其未垂直居中对齐。我注意到你没有在任何地方设置VerticalOptions = "Center""CenterAndExpand"。我认为您必须在调用 AlertView 的页面中执行此操作 然后使用Label的VerticalTextAlignment来居中!或者使用该标签的 VerticalOptions 来居中。 【参考方案1】:

您应该将标签的垂直选项调整为 Center 或 CenterAndExpand:

 _alertMessage = new Label
        
            VerticalOptions="Center"
            TextColor = Constants.MMSGAlertTextColor,
            FontSize = 12
        ;

【讨论】:

以上是关于Xamarin Forms - 内容未在 stackLayout 中垂直居中对齐的主要内容,如果未能解决你的问题,请参考以下文章

图像控件未在 WinRT 8.1 Xamarin.Forms(便携式)项目中呈现

AdMob广告未在Xamarin Android应用中显示

Xamarin.Forms.Picker 内容在 UWP 中重复

Xamarin.Forms ListView 大小到内容?

Xamarin Forms - 状态栏与 IOS 中的内容重叠(safeareainsets 问题)

如何以编程方式从Xamarin.Forms ScrollView中删除内容?