web-dev-qa-db-fra.com

Xamarin Forms: demande de hauteur d'image ignorée à l'intérieur du cadre dans la présentation relative

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:

Issue Image

Est-ce que quelqu'un sait pourquoi cela est ignoré et comment résoudre ce problème?

8
sgarcia.dev

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>
16
Niels

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.

0
cfly24