Android Toast
Android Toast是屏幕上显示的一条小消息,类似于工具提示或者其他类似的弹出通知。 "吐司"显示在活动的主要内容之上,并且仅在短时间内保持可见。该屏幕快照显示了" Toast"在屏幕上的外观:
上面的屏幕快照中," Toast"显示在屏幕底部(但我们可以更改)。
创建Toast
这是一个Android的Toast示例:
Toast toast = Toast.makeText(getApplicationContext(), "This is a message displayed in a Toast", Toast.LENGTH_SHORT); toast.show();
Toast.makeText()方法是一种工厂方法,它创建一个Toast对象。该方法采用3个参数。首先,这些方法需要一个通过调用getApplicationContext()获得的"上下文"对象。注意:getApplicationContext()
方法是活动内部存在的方法,因此上面的代码必须位于Activity
子类中才能工作。
第二个参数是要在" Toast"中显示的文本。第三个参数是显示" Toast"的持续时间。 Toast类包含两个可以使用的预定义常量:Toast.LENGTH_SHORT和Toast.LENGTH_LONG。我们将不得不对这两个值进行试验,以查看哪种情况更适合情况。
Toast定位
我们可以使用setGravity()方法更改Toast消息在屏幕上的位置。这是一个Toast setGravity()示例:
toast.setGravity(Gravity.CENTER, 0, 0);
setGravity()方法的第一个参数指定Toast的整体位置。我们可以在Gravity类中使用以下常量来指定整体位置:
TOP
BOTTOM
LEFT
RIGHT
CENTER
CENTER_HORIZONTAL
CENTER_VERTICAL
这些常量中的每一个都定义了X或者Y方向上的位置," CENTER"常量除外,后者表示水平和垂直居中。我们可以使用|
(或者)运算符组合这些常量,如下所示:
toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTALLY, 0, 0);
setGravity()方法的另外两个参数是X和Y偏移量,该偏移量由Gravity常数定义。例如,如果我们需要将" Toast"显示在顶部,水平居中,但要比顶部位置低20个像素,则可以使用以下" setGravity()"调用:
toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTALLY, 0, 20);
Toast自定义视图
可以为"Toast"定义自定义的"视图"。为此,首先必须为自定义"视图"创建一个布局XML文件。这是一个示例" Toast"布局XML文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toast_root_view" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/background_dark" android:padding="16dp" > <TextView android:id="@+id/toast_header" android:textSize="20dp" android:textColor="@android:color/primary_text_dark" android:layout_width="match_parent" android:layout_height="match_parent" /> <TextView android:id="@+id/toast_body" android:textColor="@android:color/primary_text_dark" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
将此布局XML文件放入Android项目的/ app / src / main / res / layout目录中,并将其命名为my_toast.xml。
要将这个布局XML文件与Toast
一起使用,请编写以下代码:
LayoutInflater inflater = getLayoutInflater(); View toastLayout = inflater.inflate(R.layout.my_toast, (ViewGroup) findViewById(R.id.toast_root_view)); TextView header = (TextView) toastLayout.findViewById(R.id.toast_header); header.setText("Message for you:"); TextView body = (TextView) toastLayout.findViewById(R.id.toast_body); body.setText("You have got mail!"); Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.CENTER, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(toastLayout); toast.show();
首先,我们需要获取" LayoutInflater"。我们可以使用它来膨胀(创建)由名为my_toast.xml的布局XML文件(由R.layout.my_toast引用)定义的View。
注意,findViewById(R.id.toast_root_view)调用是inflate()方法调用的第二个参数。这将在my_toast.xml布局XML文件中找到根ViewGroup(根ViewGroup具有ID toast_view_group)。该调用对于膨胀的"视图"来说是必要的,以便知道膨胀的"视图"内部的根" ViewGroup"是什么。
一旦创建了"视图",就可以从"视图"中获得两个" TextView"组件,并设置它们的文本。
最后,创建一个" Toast"对象,设置其重力(位置/对齐),持续时间," View",然后显示它。