1 常见toast
Toast.makeText(getApplicationContext(), "要显示的文本", 0).show();
这是默认显示的位置,以及文本信息,第三个参数是常量,Toast.LENGTH_SHORT(0)和Toast.LENGTH_LONG(1)代表显示的时间长度。
2 可以设置toast的margin值
Toast msg1 = Toast.makeText(getApplicationContext(), "A", 0);
msg1.setMargin(0.0F, 0.8F);//横向往右,竖向往上
Log.i("123", ""+msg1.getHorizontalMargin());
Log.i("123", ""+msg1.getVerticalMargin());
msg1.show();
这里几乎置顶了,可能和屏幕大小的关系,
3 可以自定义设置toast的视图
Toast toast = new Toast(getApplicationContext());//这里不能使用上面那个方法创建对象
ImageView iv = new ImageView(getApplicationContext());
iv.setImageResource(R.drawable.ic_launcher);
toast.setView(iv);//设置imageview的视图
toast.show();
这里的话 视图就改变了。变成了自己想要的视图。
4 自定义布局,然后添加自定义的view 和默认的view
Toast toast = Toast.makeText(getApplicationContext(), "ABC", 0);
LinearLayout llayout = new LinearLayout(getApplicationContext());//容器
llayout.setOrientation(LinearLayout.VERTICAL);//方向
ImageView iv = new ImageView(getApplicationContext());//自己的view
iv.setImageResource(R.drawable.ic_launcher);
View v = toast.getView();//默认的view
llayout.addView(iv);//加入到容器中
llayout.addView(v);
toast.setView(llayout);
toast.show();
这里很明显可以看到上面是自己的view,然后和默认的组合起来了。
5 自定义布局 在toast默认的view中添加view
Toast msg;
msg = Toast.makeText(getApplicationContext(),"带图片的Toast", Toast.LENGTH_LONG);
msg.setGravity(Gravity.CENTER, 0, 0); //设置显示位置
LinearLayout toastView = (LinearLayout) msg.getView();//强转 默认的view成一个容器
ImageView imageCodeProject = new ImageView(getApplicationContext()); //图片
imageCodeProject.setImageResource(R.drawable.ic_launcher);
toastView.addView(imageCodeProject, 0); //添加View
msg.show();
很明显可以看到和上面的不一样的效果,因为这里是用了默认的toast的view,用的它的背景,然后加入imageview,效果还是不错的。
6 因为toast是更新UI界面的方法,所以使用show()。另外如果想要显示在子线程中我们怎么做呢?
public static void showOnUiThread(final Activity context, final String text) {
context.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, text, 0).show();
}
});
}
好了,另外有个setGravity(,,);设置显示的位置。这里toast上下文全部用ge'ta'pgetapplicationContext()获得,不用写 ***Activity.this的形式,