Android之Toast使用

Android开发中的Toast相信大家比较熟悉,它是为了提示用户,提高与用户交互的友好性而存在的。那么Toast有哪几种使用方法呢?小编大致罗列了以下几种:

(1)、默认显示

(2)、自定义位置显示

(3)、带图片显示

(4)、自定义布局样式显示

(5)、自定义时间段显示

下面将分别对各个显示方式进行解析:

一、默认显示

Toast的默认显示如下:
Toast toast = Toast.makeText(this,"默认显示",Toast.LENGTH_SHORT);

toast.show();

其中要说明的是第三个参数,是表示Toast的显示时间,这个时间默认在Toast类中是LENGTH_SHORT和LENGTH_LONG,通过查看源码发现SHORT表示的是2000毫秒,LONG表示的是3500毫秒。有说法是说这个显示时间可以自定义,但是这个时间小编认为应该是介于2000到3500之间,不能超过或低于界限值。

二、自定义位置显示

自定义位置显示需要用到Toast类的setGravity方法。通过查看API说明可以了解到:
setGravity()方法有三个参数,分别是Gravity常量的位置指定,相对于第一个参数指定的x偏移量和y偏移量
具体例子如下:
Toast toast = Toast.makeText(this,"自定义了位置",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP|Gravity.CENTER,100,20);
toast.show();

 在setGravity方法中,第一个参数表示不设置偏移量的情况下会顶部居中显示,而设置了100的x偏移量和20的y偏移量会发生偏移。
需要知道的是x偏移是,向左正右负;y偏移是上负下正。单位是像素。偏移发生的中心是toast视图的中心偏移。

三、带图片显示

Toast可以显示图片,方法是利用获取Toast对应的布局视图,然后将Image添加到布局中,最后显示即可。
两个关键方法:获取Toast的布局视图getView(),以及添加子视图的addView()
代码如下:
			Toast toast = Toast.makeText(this, R.string.hello_world, Toast.LENGTH_LONG);
			LinearLayout layout = (LinearLayout) toast.getView();
			
			ImageView image = new ImageView(this);
			image.setImageResource(R.drawable.ic_launcher);
			layout.addView(image,1);
			toast.setGravity(Gravity.TOP|Gravity.CENTER,200, 200);
			toast.show();

其实只要把Toast当成一个布局视图就可以了,然后往视图里添加Child视图,整体形成了一个ViewGroup。

四、自定义视图显示

自定义视图需要自己构建一个XML布局文件,在里面添加好元素之后,使用 inflater充气泵为XML布局文件进行重新,使之映射成一个布局的视图对象实例。
方法是inflate().
首先定义自定义布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView 
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="A"
        android:gravity="center"/>
    <ImageView 
        android:src="@drawable/imgae"
        android:layout_width="100dp"
        android:layout_height="100dp"/>
    <TextView 
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="B"
        android:gravity="center"/>
</LinearLayout>

Toast的Java代码如下:
			LayoutInflater inflater = getLayoutInflater();
			View layout = inflater.inflate(R.layout.toast_custom_layout, (ViewGroup) findViewById(R.id.toast_root));
			
			Toast toast = Toast.makeText(this, R.string.hello_world, Toast.LENGTH_LONG);
			toast.setView(layout);
			toast.setGravity(Gravity.CENTER, 0, 0);
			toast.show();
使用了toast的setView方法添加视图.

五、时间叠加的解决

toast对象显示时会默认显示一段时间,当多个Toast对象被触发时会形成时间叠加,默认会当第一个toast对象显示完毕之后其余的toast才开始显示,这样会造成的问题就是toast滞留时间很长,影响用户体验。解决思路如下:
当我们的toast对象是通过makeText方法创建的时候,显示的内容可以通过toast对象的setText方法进行替换。
API原文解释是:
Update the text in a Toast that was previously created using one of the makeText() methods.
基本就是:
if(toast == null)
{
     toast = makeToast(...,text,...);
}
else
{
     toast.setText(text);
}
toast.show();

这样就可以直接替换toast里面的内容而不用重新创建toast。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值