内容概述
Toast是一个消息提示组件
设置显示的位置
自定义显示内容
简单封装
小知识
根布局宽度高度设置不起效果,需要再套一个布局控件。比如LinearLayout里面再套一个LinearLayout。
代码
不同版本的Toast显示情况似乎不一样
ToastActivity.java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.example.myapplication.util.ToastUtil;
import org.w3c.dom.Text;
public class ToastActivity extends AppCompatActivity {
private Button mBtnToast1,mBtnToast2,mBtnToast3,mBtnToast4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_toast);
mBtnToast1=findViewById(R.id.btn_toast_1);
mBtnToast2=findViewById(R.id.btn_toast_2);
mBtnToast3=findViewById(R.id.btn_toast_3);
mBtnToast4=findViewById(R.id.btn_toast_4);
OnClick onClick=new OnClick();
mBtnToast1.setOnClickListener(onClick);
mBtnToast2.setOnClickListener(onClick);
mBtnToast3.setOnClickListener(onClick);
mBtnToast4.setOnClickListener(onClick);
}
class OnClick implements View.OnClickListener{
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.btn_toast_1:
Toast.makeText(ToastActivity.this,"Toast",Toast.LENGTH_SHORT).show();
//makeText返回的是一个Toast
break;
case R.id.btn_toast_2:
Toast toastCenter=Toast.makeText(ToastActivity.this,"居中Toast",Toast.LENGTH_SHORT);
//注意这里先不需要show
toastCenter.setGravity(Gravity.CENTER,0,0);
toastCenter.show();
//我这里的居中Toast还是在默认位置...
break;
case R.id.btn_toast_3:
Toast toastCustom=new Toast(getApplicationContext());
LayoutInflater inflater=LayoutInflater.from(ToastActivity.this);
View viewCustom = inflater.inflate(R.layout.layout_toast,null);
ImageView imageView=viewCustom.findViewById(R.id.iv_toast);
TextView textView=viewCustom.findViewById(R.id.tv_toast);
Glide.with(ToastActivity.this).load("https://imgsa.baidu.com/forum/w%3D580%3B/sign=6f952c5c77cb0a4685228b315b58f724/cb8065380cd79123f4bb5ad2a1345982b2b78039.jpg").into(imageView);
toastCustom.setView(viewCustom);
toastCustom.setDuration(Toast.LENGTH_LONG
);
toastCustom.show();
break;
case R.id.btn_toast_4:
ToastUtil.showMsg(getApplicationContext(),"包装过的Toast");
break;
}
}
}
}
ToastUtil.java
package com.example.myapplication.util;
import android.content.Context;
import android.widget.Toast;
public class ToastUtil {
public static Toast mtoast;
public static void showMsg(Context context,String msg){
if(mtoast==null)
mtoast=Toast.makeText(context,msg,Toast.LENGTH_LONG);
else{
mtoast.cancel();
mtoast=Toast.makeText(context,msg,Toast.LENGTH_LONG);
}
mtoast.show();
}
}
layout_toast.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="200dp"
android:layout_height="200dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="200dp"
android:layout_height="200dp">
<ImageView
android:id="@+id/iv_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"/>
<TextView
android:id="@+id/tv_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="如果爱有颜色"
android:textSize="18sp"
android:textColor="@color/colorBlue"
android:layout_marginTop="10dp"
/>
</LinearLayout>
</LinearLayout>