默认的Toast有点单调,与项目UI不匹配,自己写了一个。 先定义Layout,:
<?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="111dp"
android:orientation="horizontal" >
<ImageView
android:layout_width="25dp"
android:layout_height="fill_parent"
android:src="@drawable/my_toast_left" />
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:background="#CCFFFFFF"
android:gravity="center"
android:singleLine="true"
android:textColor="@color/black"
android:textSize="31dp" />
<ImageView
android:layout_width="25dp"
android:layout_height="fill_parent"
android:src="@drawable/my_toast_right" />
</LinearLayout>
有是一个半透明的背景框,上面有一个TextView,左右分开是因为四角是椭圆的。本来中间TextView的背景也是用一张半透明的图片,但发现用了以后,宽度即便改成wrap_content,也不能自动适应了,宽度是背景图片的宽度。 所以现在直接写成白色,再设置一个透明度。 MyToast类继承Toast:
package com.jtang.android.components;
import com.jtang.android.R;
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MyToast extends Toast {
public MyToast(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public static Toast makeText(Context context, CharSequence text, int duration) {
Toast result = new Toast(context);
LayoutInflater inflate = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflate.inflate(R.layout.my_toast, null);
TextView tv = (TextView)v.findViewById(R.id.message);
tv.setText(text);
result.setView(v);
//setGravity方法用于设置位置,此处为垂直居中
result.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
result.setDuration(duration);
return result;
}
}