Android:Toast 与 Snackbar 加图标的使用
Androiid 11 以前,Toast可能通过 Toast.getView() 获取 Toast 的视图并添加图标布局。但在 Android 11 及其更高的版本中,已经无法使用这个方法来获取其视图了。但可以使用 Snackbar 来实现这个功能。
1、使用 Toast
tv_toast = findViewById(R.id.tv_toast);
tv_toast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast mToast = Toast.makeText(MainActivity.this, "上传成功",
Toast.LENGTH_LONG);
LinearLayout toastView = (LinearLayout) mToast.getView();
toastView.setOrientation(LinearLayout.HORIZONTAL);
ImageView imageCodeProject = new ImageView(getApplicationContext());
imageCodeProject.setImageResource(R.drawable.ico_ok);
toastView.addView(imageCodeProject, 0);
mToast.show();
}
});
2、使用 Snackbar
tv_snackbar = findViewById(R.id.tv_snackbar);
tv_snackbar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar snackbar = Snackbar.make(v, "这是一个snackbar", Snackbar.LENGTH_SHORT);
snackbar.setAction("取消", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
TextView textView = snackbar.getView().findViewById(com.google.android.material.R.id.snackbar_text);
Drawable drawable = getResources().getDrawable(R.drawable.ico_ok,null);//图片自己选择
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
textView.setCompoundDrawables(drawable, null, null, null);
//增加文字和图标的距离
textView.setCompoundDrawablePadding(20);
textView.setGravity(Gravity.CENTER);
snackbar.show();
}
});