在做一个Android项目时,Toast用到的地方非常多.但是原生控件确实不好看.所以自己定义一个好看的.

这里主要记录一个方法:showShortToast

 /**
     * 短暂显示Toast消息
     *
     * @param context
     * @param message
     */
public static void showShortToast(Context context, String message) {

        //对于已经载入的Activity,那么用findById来查找.但是没有载入或者想要动态载入的Activity.我们采用LayoutInflater
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //通过布局文件.查找自定义的toast
        View view = inflater.inflate(R.layout.custom_toast, null);
        //找到后再findById
        TextView text = (TextView) view.findViewById(R.id.toast_message);
        //设置toast的显示信息
        text.setText(message);
        //实例化toast
        Toast toast = new Toast(context);
        //设置显示时间长短
        toast.setDuration(Toast.LENGTH_SHORT);
        //显示位置
        toast.setGravity(Gravity.BOTTOM, 0, 300);
        //设置view
        toast.setView(view);
        //show
        toast.show();
    }

其中首先获得inflater:  在Activity里面就使用了LayoutInflater来载入界面, 通过getSystemService(Context.LAYOUT_INFLATER_SERVICE)方法可以获得一个 LayoutInflater, 也可以通过LayoutInflater inflater = getLayoutInflater();来获得.然后使用inflate方法来载入layout的xml.

得到inflater后,就可以得到View对象.通过view对象的findById()获得id="toast_message"的控件.设置标题等.

 

其中custom_toast.xml如下:

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/toast_bg"
    android:padding="10dp" >

    <ImageView
        android:id="@+id/toast_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:background="@drawable/toast_icon" />

    <TextView
        android:id="@+id/toast_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="5dp"
        android:layout_toRightOf="@id/toast_icon"
        android:gravity="center"
        android:maxLines="2"
        android:textColor="@color/toast_color"
        android:textSize="12sp" />

</RelativeLayout>

xml中的图片可以根据自己爱好设置.