Android——自定义Toast(含源码下载)
16lz
2021-01-24
Toast 类通常用于显示一些快速提示信息,应用范围非常广泛。下面将对 Toast 类进行详细介绍。应用 Toast 类
在屏幕中显示的消息提示框具有如下几个特点:
- 没有任何控制按钮。
- 不会获得焦点。
- 经过一段时间后会自动消失。
使用 Toast 类来显示消息提示框比较简单,一般一条语句就可以实现:
Toast.makeText(getApplicationContext(),"提示内容",Toast.LENGTH_SHORT).show();
但是随着我们学习的深入,系统自带的样式已经满足不了我们的需求了,这时我们就需要直接来设计提示框的样式。
下面将简单介绍一下Toast自定义样式如何实现的。
实现自定义Toast有两步较关键。
第一步:设计自定义布局layout
第二步:对Toast类的以下参数进行设置。
这里贴出一个简单的代码:
toast_layout.xml
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/toast_view" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/img_toast" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@drawable/icon_tip" /> <TextView android:id="@+id/tv_toast" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是一个自定义的Toast" android:textSize="30sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/img_toast" /></androidx.constraintlayout.widget.ConstraintLayout>
ToastUtils.java
package com.example.mydemo;import android.content.Context;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import androidx.annotation.NonNull;public class ToastUtils{ private static Toast toast = null; public static void showToast(@NonNull Context context, @NonNull LayoutInflater inflater, @NonNull int layout) { if (toast == null){ //填充自定义视图 View vToast = inflater.inflate(layout,null); toast = new Toast(context); //设置自定义视图 toast.setView(vToast); //设置持续时间(Toast.LENGTH_SHORT或者Toast.LENGTH_LONG) toast.setDuration(Toast.LENGTH_SHORT); //设置位置 toast.setGravity(Gravity.CENTER,0,0); } //显示toast toast.show(); }}
这样我们就可以愉快的使用自己设置的Toast提示样式了。
ToastCustomActivity.java
package com.example.mydemo;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.widget.Toast;public class ToastCustomActivity extends AppCompatActivity { private int num = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_toast_custom); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { num++; ToastUtils.showToast(getApplicationContext(),getLayoutInflater(),R.layout.toast_layout, "新的提示内容"+num,R.drawable.icon_tip); } }); }}
链接:百度网盘下载 提取码:43v6
更多相关文章
- 学习使用DrawerLayout
- Flutter与Android通信 记录
- Android——LinearLayout按下(state_pressed)或获取焦点时(state
- Android(安卓)滑动scrollBy()和scrollTo()两个方法的简单认识
- 一、初识GVR ---- Android(安卓)VR视频/Google VR for Android(
- Android(安卓)Studio老是提示重启ADB解决!
- Android(安卓)中点击两次返回键才退出
- Android(14) ArrayAdapter(数组适配器)的三种方法
- 第一行代码 Android(安卓)第 2 版 读书笔记