创建来自屏幕顶部的 Toast

Create a Toast that Comes From Top of Screen

我想知道我们如何在 Android 中创建自定义 toast 并像这样显示在屏幕顶部?

我来自 iOS 背景,现在我必须创建这样的自定义控件。

有什么指点吗?

谢谢

试试这个::

Toast toast= Toast.makeText(getApplicationContext(), 
"Your string here", Toast.LENGTH_SHORT);  
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();

为位置添加此行

 toast.setGravity(Gravity.TOP, 0, 0);

您可以使用 面包丁 来达到这个目的。

说明

A Crouton will be displayed at the position the developer decides. Standard will be the top of an application window. You can line up multiple Croutons for display, that will be shown one after another

为任意 CharSequence 创建面包丁:

Crouton.makeText(Activity, CharSequence, Style).show();

more details on Crouton,一个 Android

的上下文敏感通知

有很多可以用来吐司描述here

创建自定义 toast 布局,toast.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:background="@color/yellow"
      android:layout_width="match_parent"
      android:padding="8dp"
      android:gravity="center"
      android:textSize="32sp"
      android:layout_height="256dp"/>

使用上面的布局创建 toast:

    static Toast t;

public static void show(Context c, String s) {
    if (t == null) {
        t = new Toast(c.getApplicationContext());
        t.setGravity(Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
        LayoutInflater inflater = LayoutInflater.from(c);
        TextView v = (TextView) inflater.inflate(R.layout.toast, null);
        t.setView(v);
        t.setDuration(Toast.LENGTH_LONG);
    }
    TextView v = (TextView) t.getView();
    v.setText(s);
    t.show();
}

检查这个 link:https://github.com/gfranks/GFMinimalNotifications,这就是你想要的,我认为它工作正常。

输出:

或者您可以像这样准备自定义吐司:

View layout = getLayoutInflater().inflate(R.layout.customtoast,
            (ViewGroup) findViewById(R.id.custom_toast_layout));
Toast toast = new Toast(getApplicationContext());
toast.setDuration(Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP, 0, 0);
toast.setView(layout);
toast.show();

如您所见,有很多解决方案。但最简单的方法是在 XML 布局文件中创建一个布局,并使其不可见。当需要显示此视图时,使其可见并启动动画。