2017-05-13 8 views
0

Ich versuche, Text über ein Bild mit einem Raster zu platzieren. Es scheint jedoch, dass Xamarin das Etikett aus irgendeinem seltsamen Grund über das Bild stellt.Xamarin Forms Grid platziert keine Beschriftung oben auf dem Bild

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
    <Image Grid.Column="0" Source="profile_banner.png" HorizontalOptions="CenterAndExpand"/> 
    <Label Grid.Column="0" Text="{Binding ProfileName, StringFormat='Welcome, {0}'}" FontSize="Large" FontAttributes="Bold" HorizontalOptions="CenterAndExpand" TextColor="White" /> 
</Grid> 

Und hier ist ein Bild von dem, was passiert: enter image description here

Ich mag würde den Text innerhalb des dunkelen Banners unten zu bekommen. Was mache ich falsch?

Antwort

0

In diesem Fall ist GridView nicht der richtige zu verwendende Layout-Typ.
Sie sollten stattdessen RelativeLayout verwenden.
ist hier ein gutes Beispiel von Xamarin Forum:

public static Page GetMainPage() 
{ 
    var myLabel = new Label() { 
     Text = "Hello World", 
     Font = Font.SystemFontOfSize (20), 
     TextColor = Color.White, 
     XAlign = TextAlignment.Center, 
     YAlign = TextAlignment.Center 
    }; 

    var myImage = new Image() { 
     Source = FileImageSource.FromUri (
      new Uri("http://xamarin.com/content/images/pages/index/hero-slide.jpg")) 
    }; 

    RelativeLayout layout = new RelativeLayout(); 

    layout.Children.Add (myImage, 
     Constraint.Constant (0), 
     Constraint.Constant (0), 
     Constraint.RelativeToParent ((parent) => { return parent.Width; }), 
     Constraint.RelativeToParent ((parent) => { return parent.Height; })); 

    layout.Children.Add (myLabel, 
     Constraint.Constant (0), 
     Constraint.Constant (0), 
     Constraint.RelativeToParent ((parent) => { return parent.Width; }), 
     Constraint.RelativeToParent ((parent) => { return parent.Height; })); 

    return new ContentPage { 
     Content = layout 
    }; 
} 
0

@EvZ denke ich Grid Layout korrekt ist ...

Sie versuchen auch Grid RowDefinition 2- Satz

tun können

1- definieren .Row = "0" für Bild und Label

Viel Glück

+0

Höchstwahrscheinlich wird es aber funktionieren, wenn Sie brauchen d mehr Flexibilität Ich würde RelativeLayout wählen. Es macht einfach keinen Sinn, ein Raster zu haben, um eine Ansicht oben auf einer anderen Ansicht zu zeichnen. – EvZ