Quantcast
Channel: Recent Threads — Xamarin Community Forums
Viewing all articles
Browse latest Browse all 204402

AbsoluteLayout not working as expected

$
0
0

Hi Folks,

I have some very weird placement of controls with absoluteLayout. The whole thing looks buggy to me actually. Instead of giving an example from my own code, please see this page: https://adventuresinxamarinforms.com/2015/05/05/demystifying-xamarin-forms-absolutelayout-and-relativelayout-positioning/

From that page, it's this portion that perfectly explains my question:

Oh dear! That’s not what I expected. The BoxView is offset so that it falls short of the correct x and y positions. Why has this happened? It took me a while to wrap my head around this but essentially the AbsoluteLayout also takes into account the size of the control when calculating the relative x and y position. In other words it is 25% of the AbsoluteLayout less the size of the control. Why would it do this? That’s a good question.>

It boils down to this. The box generated from these 2 separate ways of placing color on a form should be in the exact same position but they are not:

The red box is correct:
<Grid RowSpacing="0" ColumnSpacing="0"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <BoxView Grid.Row="1" Grid.Column="1" BackgroundColor="Red" /> </Grid>

This yellow box is not correct:
<AbsoluteLayout Opacity="0.75"> <BoxView Color="Yellow" AbsoluteLayout.LayoutBounds="0.25,0.25,0.25,0.25" AbsoluteLayout.LayoutFlags="All" /> </AbsoluteLayout>
I think there must be a bug with AbsoluteLayout. Does anyone agree?

Thanks for your help.

Mike


Viewing all articles
Browse latest Browse all 204402

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>