首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建"toast“

创建"toast“
EN

Stack Overflow用户
提问于 2018-05-07 13:00:33
回答 1查看 233关注 0票数 0

我一直在尝试使用Xamarin表单来获得类似于Android "toast“的功能。在环顾四周后,我发现了我认为是一个好的解决方案。一般的方法似乎是创建一个新的绝对布局,并使其在一段时间内出现,然后消失。虽然我认为我大体上理解正在做什么,但我似乎不能让它工作。如果我想让吐司出现在我的MainPage中,有没有人能建议我如何使用这个类?我应该在XAML文件中添加一个AbsoluteLayout吗?对不起,我相信这是一个简单的问题,但我真的不知道该怎么办……

任何帮助都将不胜感激!

代码语言:javascript
复制
public static class Popper
{
    public async static Task Pop (string message, AbsoluteLayout attachLayout, int showforMilliseconds = 1500)
    {
        var container = new StackLayout
        {
            HorizontalOptions = LayoutOptions.Center,
            VerticalOptions = LayoutOptions.Center,
            BackgroundColor = Color.FromHex ("#DDEFEFEF"),
            Padding = 10
        };

        var label = new Label
        {
            Text = message,
            FontAttributes = FontAttributes.Bold,
            Style = (Style)Application.Current.Resources["PopupText"]
        };

        container.Children.Add (label);

        container.Scale = 0;
        container.Opacity = 0;

        attachLayout.Children.Add (container, attachLayout.Bounds, AbsoluteLayoutFlags.PositionProportional);
        container.ScaleTo (1.0f, 100);
        container.FadeTo (1.0f, 100);

        await Task.Delay (showforMilliseconds);

        container.ScaleTo (0.0f, 250);
        await container.FadeTo (0.0f, 250);
        attachLayout.Children.Remove (container);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-08 03:17:41

Android上,您不必重新发明轮子,因为Toast是原生存在的。在其他平台上没有像Toast这样的东西,因此这里没有银弹解决方案。这个问题已经被多个人以多种方式解决了,这就是为什么我留下了一个评论,说你的问题可能是带有多个示例的现有线程的副本。

现在谈谈你的想法。您的实现正在工作,但是它将仅在AbsoluteLayout上显示Toast。为什么要设置这样的限制呢?如果你重新检查我在评论中分享的链接,你会发现一个更合适、更优雅的解决方案。

我好像不能让它工作。

你只需要在你的页面上有一个AbsoluteLayout,这样你就可以调用你的方法了:

代码语言:javascript
复制
await Popper.Pop("Hello world", referenceToYourAbsoluteLayout, 5000);

如果您仍然出于某种原因想要使用这个确切的解决方案,那么使用一个扩展方法可能会更有意义。然而,这个解决方案对于普通用户来说是没有意义的。

附言:请再次查看existing thread以了解更多信息和详细信息。

P.S.S:您的代码片段的使用示例

代码语言:javascript
复制
<!-- XXXPage.xaml -->
<?xml version="1.0" encoding="utf-8"?>
<ContentPage
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:XXX"
    x:Class="XXX.XXXPage">
    <AbstractLayout x:name="myLayout />
</ContentPage>

// XXXPage.xaml.cs
public partial class XXXPage : ContentPage
{
    public Test999Page()
    {
        InitializeComponent();

    }

    async protected override void OnAppearing()
    {
        base.OnAppearing();
        await Popper.Pop("Hello world", myLayout, 5000);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50207331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档