首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >位于ContentView中心的ContentView

位于ContentView中心的ContentView
EN

Stack Overflow用户
提问于 2019-12-18 23:41:55
回答 2查看 129关注 0票数 0

我有个问题。我正在尝试创建一个页面,它有一个透明背景的覆盖(ContentView)。在那个ContentView中,我想在屏幕中央加入一个ProgressBar。ContentView必须填满整个页面。

我试过这个:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             x:Class="MyApp.LoadingPreview"
             BackgroundColor="#212121">
    <ContentPage.Content>
        <RelativeLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" x:Name="RelativeLoadingLayout">
        </RelativeLayout>
    </ContentPage.Content>
</ContentPage>

在这方面:

代码语言:javascript
复制
ContentView LoadingView = new ContentView
{
    VerticalOptions = LayoutOptions.CenterAndExpand,
    HorizontalOptions = LayoutOptions.CenterAndExpand,
    BackgroundColor = Color.Red
};

ProgressBar progressBar = new ProgressBar
{
    ProgressColor = Color.FromHex("#3897F0"),
    HorizontalOptions = LayoutOptions.FillAndExpand,
    HeightRequest = 30
};

RelativeLoadingLayout.Children.Add(LoadingView,
        Constraint.RelativeToParent((parent) =>
        {
            return (0);
        }),
        Constraint.RelativeToParent((parent) =>
        {
            return ((.5 * parent.Height) - (30/2));
        }),
        Constraint.RelativeToParent((parent) =>
        {
            return (parent.Width - (2 * 15));
        }), Constraint.RelativeToParent((parent) =>
        {
            return (parent.Height);
        }));

LoadingView.Content = progressBar;

但这会导致底部中心有一个很小的ContentView。

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-19 01:21:16

您的意思是希望LoadingView填充整个页面,而progressBar位于页面的中心位置?

如果是,您可以更改如下:

代码语言:javascript
复制
ContentView LoadingView = new ContentView
        {
            VerticalOptions = LayoutOptions.FillAndExpand,
            HorizontalOptions = LayoutOptions.FillAndExpand,
            BackgroundColor = Color.Red
        };

        ProgressBar progressBar = new ProgressBar
        {
            ProgressColor = Color.FromHex("#3897F0"),
            HorizontalOptions = LayoutOptions.FillAndExpand,
            HeightRequest = 30
        };

        RelativeLoadingLayout.Children.Add(LoadingView,
                Constraint.RelativeToParent((parent) =>
                {
                    return (0);
                }),
                Constraint.RelativeToParent((parent) =>
                {
                    return (0);
                }),
                Constraint.RelativeToParent((parent) =>
                {
                    return parent.Width;
                }), Constraint.RelativeToParent((parent) =>
                {
                    return parent.Height;
                }));

LoadingView.Content = progressBar;        
票数 0
EN

Stack Overflow用户

发布于 2019-12-19 06:14:19

使用绝对布局,您的问题将得到解决。

代码语言:javascript
复制
<ContentView x:Name="overlay" AbsoluteLayout.LayoutBounds="0, 0, 1, 1"  AbsoluteLayout.LayoutFlags="All" IsVisible="{Binding isWorking}" BackgroundColor="#C0808080" Padding="0">
    <ProgressBar  ProgressColor="#3897F0" HeightRequest=“30"   IsVisible="True"  HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand"/>
</ContentView>   
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59401486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档