 <p>Check out this implementation</p> <pre><code> void OnChatClick (object sender, EventArgs args) { var pic = new Image { Source = "bubble.png", Aspect = Aspect.Fill }; var textLabel = new Label { Text = "Hello", TextColor = Color.White, VerticalOptions = LayoutOptions.Center, LineBreakMode = LineBreakMode.WordWrap }; var relativeLayout = new RelativeLayout { BackgroundColor = Color.Navy, // HeightRequest = 1000 }; var absoluteLayout = new AbsoluteLayout { VerticalOptions = LayoutOptions.Center, BackgroundColor = Color.Blue }; var frame = new Frame { BackgroundColor = Color.Red }; absoluteLayout.Children.Add (pic, new Rectangle (0, 0, 1, 1), AbsoluteLayoutFlags.All); absoluteLayout.Children.Add (textLabel, new Rectangle (0.5, 0.5, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize), AbsoluteLayoutFlags.PositionProportional); // textLabel.SizeChanged += (object label, EventArgs e) =&gt; { // relativeLayout.HeightRequest = textLabel.Height + 30; // absoluteLayout.HeightRequest = textLabel.Height + 30; // }; relativeLayout.Children.Add (frame, heightConstraint: Constraint.RelativeToParent (parent =&gt; parent.Height), widthConstraint: Constraint.RelativeToParent (parent =&gt; parent.Width * 0.3)); relativeLayout.Children.Add (absoluteLayout, xConstraint: Constraint.RelativeToParent (parent =&gt; parent.Width * 0.3), widthConstraint: Constraint.RelativeToParent (parent =&gt; parent.Width * 0.7)); ChatScrollViewStackLayout.Children.Add (relativeLayout); } </code></pre> <p>If you need to auto-adjust height of the chat message for long text uncomment all five commented lines.</p>