Есть ли способ использовать абсолютный макет в качестве всплывающего окна? Я пытаюсь создать всплывающее окно настройки. Это возможно?
<StackLayout HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand" BackgroundColor = "Yellow">
//Elements here
</StackLayout>
<AbsoluteLayout StyleClass = "dialogbox" HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand">
//Popup here
</AbsoluteLayout>
@SparshaBhattarai есть ли способ анимировать просмотр контента? например, для моего содержимого установлено значение «isvisible = false», и когда я нажимаю кнопку, представление содержимого исчезает
Вы можете добиться этого с помощью AbsoluteLayout
и добавить анимацию затухания. Вот работает GIF.
Есть код.
<StackLayout>
<Button
x:Name = "btn"
Text = "click"
/>
<ContentView x:Name = "popupLoginView" BackgroundColor = "#C0808080" Padding = "10, 0" IsVisible = "false" AbsoluteLayout.LayoutBounds = "0, 0, 1, 1" AbsoluteLayout.LayoutFlags = "All">
<AbsoluteLayout VerticalOptions = "Center" HorizontalOptions = "Center">
<StackLayout Orientation = "Vertical" HeightRequest = "200" WidthRequest = "300" BackgroundColor = "White">
<Entry Margin = "20,20,20,10" Placeholder = "Enter Username"></Entry>
<Entry Margin = "20,0,20,0" Placeholder = "Enter Password"></Entry>
<Button Margin = "20,0,20,0" Text = "Login"></Button>
</StackLayout>
</AbsoluteLayout>
</ContentView>
</StackLayout>
В формах xamarin вы можете добавить анимацию затухания для просмотра. Есть код анимации.
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
btn.Clicked += Btn_Clicked;
}
private async void Btn_Clicked(object sender, EventArgs e)
{
if (popupLoginView.IsVisible==true)
{
btn.IsEnabled = false;
await popupLoginView.FadeTo(0,2000);
await Task.Delay(2000);
popupLoginView.Opacity = 0;
popupLoginView.IsVisible = false;
btn.IsEnabled = true;
return;
}
if (popupLoginView.IsVisible == false)
{
if (popupLoginView.Opacity==1)
{
popupLoginView.Opacity = 0;
}
popupLoginView.IsVisible = true;
btn.IsEnabled = false;
await popupLoginView.FadeTo(1, 2000);
await Task.Delay(2000);
btn.IsEnabled = true;
popupLoginView.Opacity = 1;
return;
}
}
}
Есть статья про анимацию затухания. https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/animation/simple#fading
Если вы хотите добиться этого с помощью Rg.Plugins.Popup
и добавить анимацию, вы можете обратиться к этой статье, она добавит несколько анимаций.
https://www.c-sharpcorner.com/article/learn-about-xamarin-forms-animation-with-popuppage/
есть ли способ добавить затухание?
@LawrenceAgulto Да, чтобы добиться постепенного появления, вы можете установить popupLoginView.Opacity = 1; затем установите popupLoginView.FadeTo(0,2000);
Я обновил свой ответ, вы можете сослаться на него
@LawrenceAgulto Если ответ полезен, отметьте его как ответ, это поможет другим, у кого есть похожая проблема.
Нужна ли отсрочка задачи?
Вы можете использовать плагин Rg.Plugins.Popup для создания пользовательских всплывающих окон и диалогов. Ссылка: github.com/rotorgames/Rg.Plugins.Popup