親の30%を使用するボタンと、親の70%を使用するテキスト入力を使用して、垂直スタックレイアウトを作成する方法はありますか?このようなもの:
<StackLayout Orientation="Vertical">
<Entry Height="70%"></Entry>
<Button Height="30%">Click me</Button>
</StackLayout>
しかし、これは機能しません。これまでの唯一の解決策は、完全なグリッドアイテムを作成し、それを使用することです。他に解決策はありませんか?
このシナリオでは、StackLayoutはさまざまな高さではあまりうまくいきません。 Xamarin Formsエンジンは、この時点でWPFエンジンほど丸められていません。基本的にあなたは行かなければならない
<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>
また、補足として、グリッドのみが親要素の幅または高さ全体に拡張できます。 StackLayoutは、グリッド内にあり、HorizontalOptions="Fill"
とVerticalOptions="Fill"
を配置しない限り、子の合計によって最大サイズを決定します。
これを達成できる唯一の他の方法は、OSからDeviceHeightとWidthを取得し、要素のHeightを手動で設定することです。複雑で通常は欠陥のあるアプローチですが、これはお勧めしません。
グリッドでこれを行うことができますが、より適切なレイアウトがありますAbsoluteLayout
これで位置の比率を設定できます:AbsoluteLayout.LayoutBounds = "。5,1、.5、.1"