it-swarm.com.de

Xamarin Forms StackLayout: Festlegen der Breite/Höhe von untergeordneten Elementen in Prozent

Gibt es eine Möglichkeit, ein vertikales Stapellayout mit einer Schaltfläche zu erstellen, die 30% des übergeordneten Elements und eine Texteingabe für 70% des übergeordneten Elements übernimmt? Etwas wie das:

<StackLayout Orientation="Vertical">
    <Entry Height="70%"></Entry>
    <Button Height="30%">Click me</Button>
</StackLayout>

Das geht aber nicht. Die einzige Lösung, die bisher erstellt wurde, besteht darin, ein komplettes Rasterelement zu erstellen und dieses zu verwenden. Gibt es keine anderen Lösungen?

38
sgarcia.dev

StackLayout passt in diesem Szenario nicht gut zu unterschiedlichen Höhen. Die Xamarin Forms-Engines sind an dieser Stelle nicht so gut gerundet wie die WPF-Engine. Grundsätzlich muss man gehen

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="7*" />
        <RowDefinition Height="3*" />
    </Grid.RowDefinitions>
    <Entry Grid.Row="0" VerticalOptions="Fill"></Entry>
    <Button Grid.Row="1" VerticalOptions="Fill">Click me</Button>
</Grid>

Auch als Randnotiz können nur Raster auf die volle Breite oder Höhe des übergeordneten Elements erweitert werden. StackLayouts bestimmen ihre maximale Größe durch die Summe ihrer Kinder, es sei denn, sie befinden sich in einem Grid und Sie geben HorizontalOptions="Fill" und VerticalOptions="Fill" ein.

Die einzige andere Möglichkeit, dies zu erreichen, besteht darin, DeviceHeight und Width vom Betriebssystem abzurufen und die Höhen Ihrer Elemente manuell einzustellen. Eine komplexe und meist fehlerhafte Vorgehensweise, die ich nicht empfehlen kann.

65
Adam Pedley

Während Sie dies mit dem Raster tun können, ist das Layout besser geeignet AbsoluteLayout 

Sie können damit Positionsproportionen einstellen: AbsoluteLayout.LayoutBounds = ". 5,1, .5, .1"

0
Greensy