大家好,又见面了,我是你们的朋友全栈君。
概述
一个 toast 是在屏幕上弹出一条信息,它的大小总是包裹着需要显示的内容,并且当前的 Activity 依然是可见并且可互动的。toast会自动消失,并且不接受任何互动事件。因为 toast 可以在后台的 Service
中创建,所以即使这个应用程序没有显示在屏幕上,仍然可以弹出 toast.
toast 最好用来显示简要的信息,比如断定用户正在注意屏幕时,弹出”File saved”. toast 不能接受任何用户互动事件,如果需要用户响应并采取操作,考虑使用 状态栏通知 来替代.。
基本使用
首先,用 makeText() 方法实例化一个 Toast 对象。该方法需要三个参数:当前应用的 Context ,文本消息,和toast的持续时间。该方法返回一个实例化过的Toast对象。你可以用 show() 方法将该toast通知显示出来:
代码语言:javascript复制 Toast.makeText(ToastActivity.this, "默认提示", Toast.LENGTH_SHORT).show();
指定显示位置
默认的,我们的toast提示是显示在底部正中间。我们还可以自己指定位置。通过 setGravity
代码语言:javascript复制 toast.setGravity(Gravity.TOP | Gravity.LEFT, 0, 0);
追加图片
默认toast只显示一个文本框,我们还可以追加图片或其他view进去
代码语言:javascript复制 LinearLayout linearLayout = (LinearLayout) toast.getView();
ImageView imageView = new ImageView(ToastActivity.this);
imageView.setImageResource(R.mipmap.ic_launcher);
linearLayout.addView(imageView);
首先,我们通过getView获得该toast的布局。之后,我们向布局中添加我们的布局,这里,我们添加一个简单的视图。
自定义布局
通常情况下,默认的布局很难满足我们的需求,在toast中也可以使用自定义布局。
代码语言:javascript复制 View view1 = LayoutInflater.from(ToastActivity.this).inflate(R.layout.layout_toast, null);
toast.setView(view1);
使用inflate从xml文件中加载我们定义的布局,然后应用到toast上,xml布局如下:
代码语言:javascript复制<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:src="@drawable/qq_background"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@ id/imageView"
android:layout_gravity="center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="show_text"
android:id="@ id/textView"
android:layout_gravity="center_horizontal" />
</LinearLayout>
在线程中使用
根据安卓编程规范,我们不能再会UI线程中更改UI界面。toast是一个ui,因此,我们只有使用 runOnUiThread来显示我们的信息
代码语言:javascript复制 runOnUiThread(new Runnable() {
@Override
public void run() {
Toast toast = Toast.makeText(ToastActivity.this, "线程中提示", Toast.LENGTH_SHORT);
toast.show();
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194554.html原文链接:https://javaforall.cn