android 自定义Toast & 如何使Toast随Activity消失而消失
自定义toast(包括带图片的toast以及 自定义底色和边框的Toast)
自定义位置的toast
在Activity中创建一个toast对象,然后:
toast = Toast.makeText(getApplicationContext(), "自定义位置Toast",Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show();
带图片和文字的toast
代码如下:
toast = Toast.makeText(getApplicationContext(), "带图片的Toast",Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); LinearLayout toastView = (LinearLayout) toast.getView(); ImageView image = new ImageView(getApplicationContext()); image.setImageResource(R.drawable.ic_launcher); toastView.addView(image, 0); toast.show();
自定义边框以及底色的toast
btn_test_toast5.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub View toastRoot = getLayoutInflater().inflate(R.layout.my_toast, null); // 圆角 灰色背景 Toast toast = new Toast(getApplicationContext()); toast.setView(toastRoot); toast.show(); } });在 my_toast布局文件中:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/my_border" > <TextView android:id="@+id/TextViewInfo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="这是一个自定义背景颜色的提示框" android:textColor="#fff"/> <!-- android:textColor="#ff00ff00" --> </LinearLayout>
在my_border.xml文件中:
<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <!-- toast 显示窗体的背景色 --> <solid android:color="#4f5555" /> <stroke android:width="1dp" android:color="#FFFFFFFF" /> <padding android:bottom="7dp" android:left="7dp" android:right="7dp" android:top="7dp" /> <!-- radius 越大,圆角矩形弯曲越明显 --> <corners android:radius="6dp" /> </shape>下载地址:
如何使toast随Activity消失而消失?
findViewById(R.id.btn_toast).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 只创建一个Toast对象 if (toast != null) { count++; toast.setText(str + "count:" + count); toast.setDuration(Toast.LENGTH_LONG); toast.show(); } else { count++; toast = Toast.makeText(MainActivity.this, str + "count:" + count, duration); toast.show(); } } }); @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { this.finish(); if (toast != null) { toast.cancel(); } } return super.onKeyDown(keyCode, event); }
// 只创建一个Toast对象,在合适的地方把Toast给cancel()就可以了。
2014-11-20 17:53:33
posted on 2014-01-09 11:29 jinfenglee 阅读(476) 评论(0) 编辑 收藏 举报