Android之Toast使用
Posted 骨灵冷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。
以上是关于Android之Toast使用的主要内容,如果未能解决你的问题,请参考以下文章