Android消息提醒_Toast详解

Toast是最常用的消息提示的功能. 但是我相信可能很多人都没有仔细的去看看他的详细使用.Toast是基于Android 的 Window的显示. 所以跟Activity的生命周期没有关系. 所以使用中也不需要Activity的上下文. 只需要传入全局上下文即可. 屏幕一次只能显示一个Toast

建议阅读完以后看我另一篇文章讲解Android5.0添加的MaterialDesign通知提醒Snackbar

参考文档:

方法介绍

创建Toast

1
2
3
4
5
6
7
Toast makeText (Context context, // 全局上下文即可, 你传入Activity也行
int resId, // 显示字符串内容
int duration) // 显示时间
Toast makeText (Context context,
CharSequence text,
int duration)

设置居中方式

1
2
3
4
5
6
7
void setGravity (int gravity, // 居中方式
int xOffset, // 偏移值
int yOffset)
int getGravity () // 得到居中方式
int getXOffset () // 得到X轴偏移值
int getYOffset () // 得到Y轴偏移值

设置相对偏移值

这是给WindowManager.LayoutParams设置Margin值, 不了解的去看下WindowManager吧

参数是百分比的形式. 要注意Toast默认是在水平居中的屏幕下方.

1
2
3
4
5
void setMargin (float horizontalMargin, // 水平相对
float verticalMargin)
float getHorizontalMargin ()
float getVerticalMargin ()

设置显示时间

1
void setDuration (int duration)

参数值包含:

  1. LENGTH_SHORT 短暂显示
  2. LENGTH_LONG 长时间显示

设置文字

修改吐司显示的文字内容

1
2
3
void setText (CharSequence s)
void setText (int resId)

显示和隐藏

1
2
3
void show () // 显示
void cancel () // 取消显示

自定义显示

1
2
3
void setView (View view) // 设置一个View对象作为显示
View getView () // 得到Toast的View对象

修改默认Toast

如果嫌弃setView方法麻烦, 只是想改下文字颜色之类的简单需求可以直接修改默认的Toast的View对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="?android:attr/toastFrameBackground">
<TextView
android:id="@android:id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:textAppearance="@style/TextAppearance.Toast"
android:textColor="@color/bright_foreground_dark"
android:shadowColor="#BB000000"
android:shadowRadius="2.75"
/>
</LinearLayout>

直接getView()得到控件对象findViewById()即可修改