天天看点

Android开发指南(35) —— Toast Notifications

前言

声明

  欢迎转载,但请保留文章原始出处:) 

toast通知

译者署名: 呆呆大虾

版本:android 4.0 r1

原文

快速查看

toast是一种只在屏幕上显示一小会儿的消息,它没有焦点(也不暂停当前的activity),因此也不能接受用户的输入。

可以通过定制toast的布局来显示图片。

在本文中:

<a href="http://www.cnblogs.com/over140/admin/editposts.aspx?postid=2259758#basics">基础知识</a>

<a href="http://www.cnblogs.com/over140/admin/editposts.aspx?postid=2259758#positioning_toast">定位toast</a>

<a href="http://www.cnblogs.com/over140/admin/editposts.aspx?postid=2259758#custom_toast">创建自定义toast视图</a>

关键类

<a href="http://developer.android.com/reference/android/widget/toast.html">toast</a>

toast通知是一种在窗口表面弹出的消息。它只占用信息显示所需的空间,用户当前的activity仍保持可见并可交互。该通知自动实现淡入淡出,且不接受人机交互事件。

以下截图展示了闹钟程序的toast通知示例。一旦闹钟被打开,就会显示一条toast作为对设置的确认。

Android开发指南(35) —— Toast Notifications

<a>基础知识</a>

context context = getapplicationcontext(); 

charsequence text = "hello toast!"; 

int duration = toast.length_short; 

toast toast = toast.maketext(context, text, duration); 

toast.show();

上例演示了大部分toast通知需要的所有内容,应该不大会需要用到其他内容了。不过,你也许想在其他位置显示toast或是要用自己的布局替换默认相对简单的文本消息,下一节将描述如何完成。

还可以将多个方法链接起来写,以避免持久化toast对象,就像这样:

toast.maketext(context, text, duration).show();

例如,如果决定把toast置于左上角,可以这样设置重力常数:

toast.setgravity(gravity.top|gravity.left, 0, 0);

如果想让位置向右移,就增加第二个参数的值;要向下移,就增加最后一个参数的值。

Android开发指南(35) —— Toast Notifications

创建自定义的toast视图

例如,可以用以下的xml(保存为toast_layout.xml)创建出右边截图中所示的布局:

&lt;linearlayout xmlns:android="http://schemas.android.com/apk/res/android" 

              android:id="@+id/toast_layout_root" 

              android:orientation="horizontal" 

              android:layout_width="fill_parent" 

              android:layout_height="fill_parent" 

              android:padding="10dp" 

              android:background="#daaa" 

              &gt; 

    &lt;imageview android:id="@+id/image" 

               android:layout_width="wrap_content" 

               android:layout_height="fill_parent" 

               android:layout_marginright="10dp" 

               /&gt; 

    &lt;textview android:id="@+id/text" 

              android:layout_width="wrap_content" 

              android:textcolor="#fff" 

              /&gt; 

&lt;/linearlayout&gt;

注意,linearlayout元素的id是“toast_layout”。必须用这个id从xml中解析出布局,如下:

layoutinflater inflater = getlayoutinflater(); 

view layout = inflater.inflate(r.layout.toast_layout, 

                               (viewgroup) findviewbyid(r.id.toast_layout_root)); 

imageview image = (imageview) layout.findviewbyid(r.id.image); 

image.setimageresource(r.drawable.android); 

textview text = (textview) layout.findviewbyid(r.id.text); 

text.settext("hello! this is a custom toast!"); 

toast toast = new toast(getapplicationcontext()); 

toast.setgravity(gravity.center_vertical, 0, 0); 

toast.setduration(toast.length_long); 

toast.setview(layout); 

转载:http://www.cnblogs.com/over140/archive/2011/11/23/2259758.html

继续阅读