В моем проекте Xamarin.Form у меня есть несколько кнопок, которые являются дочерними элементами StackLayout (Orientation = "Horizontal") в файле XAML. Размер этих кнопок не регулируется автоматически, поэтому все кнопки могут отображаться на экране любого устройства. Они слишком большие, и некоторые из них выходят за пределы экрана.
Я включил StackLayout, упомянутый выше, в другой StackLayout, который имеет WidthConstraint, который составляет 100% ширины экрана устройства. И я попробовал несколько горизонтальных вариантов для кнопок и макетов, которые не помогли.
<ContentPage.Content>
<RelativeLayout>
<StackLayout
RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height,Factor=0.5,Constant=0}"
RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=1,Constant=0}"
BackgroundColor="Aqua">
<Image Source="map.png" />
</StackLayout>
<StackLayout
RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent,Property=Height,Factor=0.5,Constant=0}"
RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=1,Constant=0}">
<Entry Text="pls input here" />
<StackLayout
RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=1,Constant=0}"
Orientation="Horizontal">
<Button Text="button1"/>
<Button Text="button2"/>
<Button Text="button3"/>
<Button Text="button4"/>
<Button Text="button5"/>
</StackLayout>
</StackLayout>
</RelativeLayout>
</ContentPage.Content>
То, что я ожидаю, похоже на макет на загруженной мной картинке, что экран разделен пополам, а нижняя половина (в StackLayout) будет содержать запись, позволяющую пользователям вводить некоторые тексты, ниже которых 5 кнопок (в StackLayout) будет располагаться горизонтально внутри экрана (их размеры должны быть скорректированы так, чтобы автоматически подходить к разным размерам устройств).
Может быть, мне даже не следует использовать StackLayout для нижней половины региона? Но я думаю, что я должен использовать RelativeLayout снаружи, чтобы экран всегда был разделен пополам в любом устройстве?
Большое спасибо за любую помощь.