Ein Problem mit Xamarin Forms, das versucht, sicherzustellen, dass ein Bild der Breite der enthaltenen Spalte entspricht. (Denken Sie an eine einfache Produktliste mit einem Bild und einer Beschreibung).Xamarin Forms - Get Image to Fill Breite der Raster Spalte?
XAML-Code ist:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="formsApp.MainPage">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness"
iOS="20, 40, 20, 20"
Android="20, 20, 20, 20"
WinPhone="20, 20, 20, 20" />
</ContentPage.Padding>
<ContentPage.Content>
<ScrollView>
<StackLayout VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand"
Orientation="Vertical"
Spacing="15" >
<Grid x:Name="testGrid" VerticalOptions="Center">
</Grid>
</StackLayout>
</ScrollView>
</ContentPage.Content>
</ContentPage>
C# -Code hinter ist:
public MainPage()
{
InitializeComponent();
testGrid.BackgroundColor = Color.Gray;
testGrid.Padding = new Thickness(10D);
testGrid.RowDefinitions = new RowDefinitionCollection();
testGrid.ColumnDefinitions = new ColumnDefinitionCollection();
testGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
testGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(3, GridUnitType.Star) });
for (int MyCount = 0; MyCount < 20; MyCount++)
{
testGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
}
for (int i = 0; i < testGrid.RowDefinitions.Count(); i++)
{
StackLayout st = new StackLayout() { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.Center, IsClippedToBounds = true };
st.Children.Add(new Image
{
Source = ImageSource.FromUri(new Uri("https://lh3.googleusercontent.com/nYhPnY2I-e9rpqnid9u9aAODz4C04OycEGxqHG5vxFnA35OGmLMrrUmhM9eaHKJ7liB-=w300")),
Aspect = Aspect.AspectFit,
HorizontalOptions = LayoutOptions.EndAndExpand
});
testGrid.Children.Add(st, 0, i);
testGrid.Children.Add(new Label
{
Text = "Row" + i + " description.... fdsfsdf sdf sdfsd fsdf sdf sdf sdfsd fsd fsdf sdf sd fsd fsdf "
}, 1, i);
}
}
ich verschiedene Optionen wie Einwickeln das Bild in einem Stapel Layout angelegt haben (mit Optionen auf Stack-Layout) und AspectFit und EndAndExpand zum Bild hinzufügen, aber es ist nie 100% richtig. Resultant view from a 5" KitKat Android Emulator
Irgendwelche Tipps?
Dank
Danke dafür. Ich ging für die zweite Option, die das Problem tatsächlich behoben hat. Allerdings habe ich noch etwas anderes bemerkt: Wenn das Originalbild für den Platz viel zu groß war, dann wird die Zeilenhöhe auf die Originalgröße erweitert (Breite ist in Ordnung), auch wenn das eigentliche Bild oben gut sitzt. Ich habe diese Masse von Raum an der Unterseite? –