//两种Toast布局
//仅提示语
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/shape_toast" android:minHeight="30dp" android:minWidth="30dp"> <TextView android:id="@+id/tv_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_margin="10dp" android:gravity="center" android:textColor="@android:color/white" android:textSize="12sp" tools:text=""/> </RelativeLayout>
//图片+提示语
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" > <LinearLayout android:layout_width="240dp" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="vertical" android:paddingTop="42dp" android:paddingLeft="30dp" android:paddingRight="30dp" android:paddingBottom="42dp" > <ImageView android:id="@+id/iv_type" android:layout_width="56dp" android:layout_height="56dp" android:layout_gravity="center" android:src="@drawable/icon_warning_toast" /> <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="28dp" android:gravity="center" android:textColor="#1b1b1b" android:textSize="20sp" android:text="网络异常,请重试" /> </LinearLayout> </FrameLayout>
//自定义Toast类,可更换图片及提示语,用Builder方式创建Toast
//定制化Toast public class CommonToast extends Toast { public static final int TYPE_WARNING = 1;//警告类型,显示感叹号 public static final int TYPE_CORRECT = 2;//信息类型,显示对勾 @IntDef({TYPE_WARNING, TYPE_CORRECT}) @Retention(RetentionPolicy.SOURCE) public @interface TOAST_TYPE { } private ImageView ivType; private TextView tvTitle; public CommonToast(Context context) { super(context); View view = LayoutInflater.from(context).inflate(R.layout.layout_common_toast, null); ivType = view.findViewById(R.id.iv_type); tvTitle = view.findViewById(R.id.tv_title); setView(view); } public void setType(@TOAST_TYPE int type) { if (type == TYPE_WARNING) { ivType.setImageResource(R.drawable.icon_warning_toast); } else { ivType.setImageResource(R.drawable.icon_correct_toast); } } @Override public void setText(CharSequence s) { //super.setText(resId); tvTitle.setText(s); } public static class Builder { private CommonToast mCommonToast; public Builder(Context context) { mCommonToast = new CommonToast(context); } public Builder setGravity(int gravity, int xOffset, int yOffset) { mCommonToast.setGravity(gravity, xOffset, yOffset); return this; } public Builder setDuration(int duration) { mCommonToast.setDuration(duration); return this; } public Builder setText(CharSequence s) { mCommonToast.setText(s); return this; } public Builder setType(@TOAST_TYPE int type) { mCommonToast.setType(type); return this; } public CommonToast build() { return mCommonToast; } } }
//通过Helper类提供
public class ToastHelper { private static Toast sToast; private static CommonToast sCommonToast; private static Toast getToast(Context context){ if (sToast == null) { Context applicationContext = context.getApplicationContext(); sToast = new Toast(applicationContext); sToast.setDuration(Toast.LENGTH_SHORT); sToast.setView(LayoutInflater.from(applicationContext).inflate(R.layout.layout_toast,null)); } return sToast; } public static void showToast(Context context,String msg){ Toast toast = getToast(context); TextView textView = toast.getView().findViewById(R.id.tv_content); textView.setText(msg); toast.show(); } private static CommonToast getCommonToast(Context context) { if (sCommonToast == null) { Context applicationContext = context.getApplicationContext(); sCommonToast = new CommonToast.Builder(applicationContext) .setGravity(Gravity.CENTER, 0, 0) .setDuration(Toast.LENGTH_SHORT) .build(); } return sCommonToast; } public static void showCommonToast(Context context, CharSequence msg) { showCommonToast(context, msg, CommonToast.TYPE_WARNING); } public static void showCommonToast(Context context, CharSequence msg, @CommonToast.TOAST_TYPE int type) { CommonToast commonToast = getCommonToast(context); commonToast.setText(msg); commonToast.setType(type); commonToast.show(); } }
//在Activity中展示
public class MainActivity extends AppCompatActivity { Toast toast; AppCompatButton bt1,bt2; @SuppressLint("WrongConstant") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt1 = (AppCompatButton)findViewById(R.id.bt1); bt2 = (AppCompatButton)findViewById(R.id.bt2); bt1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ToastHelper.showToast(MainActivity.this,"show text toast"); } }); bt2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ToastHelper.showCommonToast(MainActivity.this,"show common toast"); } }); } }
效果图如下: