Home > front end >  Set Background Image Aspect in Code Behind in Xamarin Forms
Set Background Image Aspect in Code Behind in Xamarin Forms

Time:06-02

In my Xamarin Forms 5 app, I set a background image in code behind using the following code:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MyPage : ContentPage
{
   public MyPage()
   {
      InitializeComponent();
      this.BackgroundImageSource = "my_bg_image.jpg";
   }
}

How do I set the image aspect ratio in code behind? I need to set it to AspectFill.

CodePudding user response:

As @ToolmakerSteve mentioned, there's no way to set Aspect for BackgroundImageSource. The following code works fine, both in terms of setting the background image correctly and handling the keyboard covering the form elements issue on iOS.

<RelativeLayout>
   <Image
      Source="my_background_image.jpg"
      Aspect="AspectFill"
      RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width}"
      RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height}"/>
   <ScrollView
      Orientation="Neither"
      Padding="0"
      RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width}"
      RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height}">
   // Place my form elements here. In my case, I use Grid
   </ScrollView>
</RelativeLayout>

CodePudding user response:

You can set any property of any element in your xaml, by giving that element an x:Name.

<Image x:Name="myImage" ... />

c#:

myImage.Aspect = Aspect.AspectFill;
  • Related