Ответ 1
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 определяет их максимальный размер суммой своих детей, если они не находятся в Grid, и вы ставите HorizontalOptions="Fill"
и VerticalOptions="Fill"
.
Единственный способ, которым вы могли бы это сделать, - получить DeviceHeight и Width из ОС и вручную установить высоты ваших элементов. Сложный и обычно ошибочный подход, который я не рекомендую.