J'ai le code suivant:
<ScrollView Orientation="Vertical" Padding="0" VerticalOptions="FillAndExpand">
<StackLayout Spacing="0" Padding="15,0">
<Frame HasShadow="false" BackgroundColor="Transparent" Padding="0">
<RelativeLayout BackgroundColor="Olive" Padding="0" VerticalOptions="End">
<Frame HeightRequest="100" WidthRequest="100" BackgroundColor="Purple" Padding="0" HasShadow="false">
<Image HeightRequest="50" WidthRequest="50" Source="assets/avatar-man.png"></Image>
</Frame>
<BoxView HeightRequest="100" BackgroundColor="Teal" RelativeLayout.XConstraint="{ConstraintExpression Type=Constant, Constant=100}" RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=1, Constant=-100}" />
<Frame BackgroundColor="Transparent" HasShadow="false" Padding="0" RelativeLayout.XConstraint="{ConstraintExpression Type=Constant, Constant=100}" RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=1, Constant=-100}">
<Label>Hello</Label>
</Frame>
</RelativeLayout>
</Frame>
</StackLayout>
</ScrollView>
Cependant, pour une raison quelconque, la demande de hauteur d'image est ignorée et au lieu d'afficher un carré de 50 x 50 unités, elle remplit tout l'écran comme suit:
Est-ce que quelqu'un sait pourquoi cela est ignoré et comment résoudre ce problème?
J'ai eu le même problème, j'ai fini par enrouler un StackLayout autour de mon image comme ceci:
<StackLayout>
<Image Source="{Binding MyImage}" WidthRequest="50" HeightRequest="50"/>
</StackLayout>
J'ai l'habitude de définir une Margin
sur l'image, comme ceci:
<Frame HeightRequest="100" WidthRequest="100" BackgroundColor="Purple" Padding="0" HasShadow="false">
<Image Margin="25" VerticalOptions="Center" Source="assets/avatar-man.png"></Image>
</Frame>
Prenez juste la taille (hauteur ou largeur) de la Frame
, soustrayez la taille de la Image
et divisez-la par 2. La taille de l'image sera donc 50.
Un moyen facile de le faire si la taille du cadre ne change pas.