前言
声明
欢迎转载,但请保留文章原始出处:)
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作为对设置的确认。
<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);
如果想让位置向右移,就增加第二个参数的值;要向下移,就增加最后一个参数的值。
创建自定义的toast视图
例如,可以用以下的xml(保存为toast_layout.xml)创建出右边截图中所示的布局:
<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"
>
<imageview android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginright="10dp"
/>
<textview android:id="@+id/text"
android:layout_width="wrap_content"
android:textcolor="#fff"
/>
</linearlayout>
注意,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