在我們開發APP的過程中難免會用到toast,但是系統自帶的toast無論從樣式還是效能上來看都不是理想的,在這樣的情況下,我們就需要自己定義toast來替代系統的toast。
首先我們需要定義一個類叫ToastUtil,程式碼如下:
public class ToastUtil {
private static Toast mToast;
private static Handler mHandler = new Handler();
private static Runnable runnable = new Runnable() {
public void run() {
mToast.cancel();
mToast = null;
}
};
public static void showToast(Context context, String message) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.custom_toast, null);
TextView text = (TextView) view.findViewById(R.id.toast_message);
text.setText(message);
mHandler.removeCallbacks(runnable);
mToast = new Toast(context);
mToast.setDuration(Toast.LENGTH_SHORT);
mToast.setView(view);
mToast.show();
}
}
通過上面的程式碼可以看出來其實就是利用載入佈局檔案的方式替換系統toast的樣式,我的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="35dp"
android:background="@drawable/toast_bg"
android:padding="10dp">
<TextView
android:id="@+id/toast_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:maxLines="2"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:text=""
android:textColor="#fff"
android:textSize="14sp" />
</RelativeLayout>
toast_bg.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#7791B6" />
<corners android:radius="8dp" />
</shape>
以下是顯示效果:
是不是比系統自帶toast美觀呢?