Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Xamarin ViewCell-图像填充,底部文本_Xamarin_Xamarin.forms - Fatal编程技术网

Xamarin ViewCell-图像填充,底部文本

Xamarin ViewCell-图像填充,底部文本,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我想要的布局如下: 我希望图像(用绿色插图)填充整个布局控制。在位于底部的图片顶部,我想要一个文本框/标签来放置标题。标题视图应具有黑色半透明背景 这是我得到的最好的(下面的代码),但它有几个问题: #1-文本没有像预期的那样包装。它只是删掉了句子,就像其他的都要离开屏幕一样 #2-图像无法缩放到容器的宽度 Label lblTitle = new Label() { BackgroundColor = new Color(0, 0, 0,

我想要的布局如下:

我希望图像(用绿色插图)填充整个布局控制。在位于底部的图片顶部,我想要一个文本框/标签来放置标题。标题视图应具有黑色半透明背景

这是我得到的最好的(下面的代码),但它有几个问题:

#1-文本没有像预期的那样包装。它只是删掉了句子,就像其他的都要离开屏幕一样

#2-图像无法缩放到容器的宽度

        Label lblTitle = new Label()
        {
            BackgroundColor = new Color(0, 0, 0, 0.8),
            LineBreakMode = LineBreakMode.WordWrap,
            FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label))
        };
        lblTitle.SetBinding(Label.TextProperty, "headline");

        Image imgBanner = new Image()
        {
            /*
            HorizontalOptions = LayoutOptions.Fill,
            VerticalOptions = LayoutOptions.End,
            Aspect = Aspect.Fill
            */
        };
        imgBanner.SetBinding(Image.SourceProperty, "ImageUrlSource");


        AbsoluteLayout.SetLayoutFlags(lblTitle, AbsoluteLayoutFlags.PositionProportional | AbsoluteLayoutFlags.WidthProportional);
        AbsoluteLayout.SetLayoutBounds(lblTitle, new Rectangle(0, 1, 1, AbsoluteLayout.AutoSize));

        AbsoluteLayout.SetLayoutFlags(imgBanner, AbsoluteLayoutFlags.SizeProportional);
        AbsoluteLayout.SetLayoutBounds(imgBanner, new Rectangle(0, 0, 1, 1));

        AbsoluteLayout layout = new AbsoluteLayout()
        {
            HorizontalOptions = LayoutOptions.Fill,
            Children = 
            {
                imgBanner,
                lblTitle
            }
        };

        View = layout;

您应该改用网格

    Label lblTitle = new Label()
    {
        BackgroundColor = new Color(0, 0, 0, 0.8),
        LineBreakMode = LineBreakMode.WordWrap,
        FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label))
    };
    lblTitle.SetBinding(Label.TextProperty, "headline");

    Image imgBanner = new Image()
    {
        /*
        HorizontalOptions = LayoutOptions.Fill,
        VerticalOptions = LayoutOptions.End,
        Aspect = Aspect.Fill
        */
    };
    imgBanner.SetBinding(Image.SourceProperty, "ImageUrlSource");

//=========== Addition Start Here ============//

    Grid grid = new Grid();
    grid.RowDefinitions = 
    {
        new RowDefinition{ Height=new GridLength(200,GridUnitType.Absolute) },
        new RowDefinition{ Height=new GridLength(30,GridUnitType.Absolute},
    }

    grid.Children.Add(imgBanner,0,1,0,2); //two rowspan
    // == .Add(imgBanner,column,column+columnspan,row,row+rowspan)

    grid.Children.Add(lblTitle,0,1,1,2);  //one rowspan

View = grid;

这修复了文本相对于图像的位置,但是图像仍然不能正确地对齐/匹配。你对我如何着手做那件事有什么建议吗?使其水平填充并垂直安装?文本也不换行。如果没有足够的空间,它就会从屏幕上消失。我一直在尝试使用GridUnitType.Auto而不是Absolute,以使其适合内容,但没有任何运气。。。