Кнопка Xamarin падает с экрана - PullRequest
0 голосов
/ 12 февраля 2020

Возможно, это "глупый" вопрос, но я не смог найти ответ в Google или не знал правильных условий поиска. Но как задать кнопку, указывающую c местоположение для всех устройств, даже когда экран повернут на бок.

Кнопка на месте в положении стоя.

Button on a location in the standing position

Кнопка на месте в боковом положении.

enter image description here

Надеюсь, это описывает то, что я имею в виду.

Это код xaml для кнопки:

<AbsoluteLayout Margin="600,400,10,10">
    <Button Text="Click me" Clicked="OnButtonClicked" WidthRequest="100" HeightRequest="50" HorizontalOptions="Center"/>
</AbsoluteLayout>

Я также пытался работать с AbsoluteLayout.LayoutBounds и AbsoluteLayout.LayoutFlags

Но тоже самое произошло.

Заранее спасибо

1 Ответ

1 голос
/ 12 февраля 2020

Согласен с Джейсоном. Если вы хотите использовать один макет для размещения нескольких экранов, AbsoluteLayout не является хорошим выбором.

Вы можете поместить свою кнопку в RelativeLayout или FlexLayout. Here is my code about RelativeLayout`.

    <ContentPage.Content>
    <RelativeLayout>

        <Button  RelativeLayout.XConstraint=
             "{ConstraintExpression Type=RelativeToParent,
                                    Property=Width,
                                    Factor=0.7}"
                RelativeLayout.YConstraint=
             "{ConstraintExpression Type=RelativeToParent,
                                    Property=Height,
                                    Factor=0.8}"

                  Text="Click me" Clicked="Button_Clicked" 
                  WidthRequest="100" 
                  HeightRequest="50" 
                  HorizontalOptions="Center"/>

    </RelativeLayout>
</ContentPage.Content>

Вы должны использовать тип ограничения «относительно родителя» и использовать факторы для позиционирования элемента.

Относительное расположение может включать размер элемента управления при позиционировании с факторами. Это означает, что если вы установите коэффициент 0, верхняя часть кнопки будет в верхней части контейнера.

Если вы установите коэффициент в 1, нижняя часть кнопки будет на дно контейнера.

Аналогично, коэффициент 0,5 будет центрировать центр вашей кнопки в центре контейнера

enter image description here

enter image description here

enter image description here

Вот ссылка на эти макеты.

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/controls/layouts#layouts -с несколькими детьми

ОБНОВЛЕНИЕ

Вы можете использовать Constant в относительном расположении. Вот мой код.

   <ContentPage.Content>
    <RelativeLayout>

        <Button  RelativeLayout.XConstraint=
             "{ConstraintExpression Type=RelativeToParent,
                                    Property=Width,
                                    Constant=-150}"
                RelativeLayout.YConstraint=
             "{ConstraintExpression Type=RelativeToParent,
                                    Property=Height,
                                    Constant=-100}"

                  Text="Click me" Clicked="Button_Clicked" 
                  WidthRequest="100" 
                  HeightRequest="50" 
                  HorizontalOptions="Center"/>

    </RelativeLayout>
</ContentPage.Content>

Здесь работает скриншот. enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...