如何在 Android 中添加自定义样式的 Toast
Toast是一条反馈消息。它只占用很少的空间来显示,它显示在活动的主要内容之上,并且只在很短的时间内保持可见。本文介绍了如何创建自定义 Toast 消息,它具有自定义背景、图像、图标等,这些是原始 Toast 库所不提供的。
在本文中, JitPack gradle的Toasty 库用于为用户创建自定义 toast,因为它是一个非常常见的库,并且已经被许多应用程序使用。
分步实施
第 1 步:创建一个新项目
要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,选择Java作为编程语言。
第 2 步:添加依赖项和 JitPack 存储库
在您的根build.gradle文件中添加支持库(而不是在模块 build.gradle 文件中)。这个库jitpack是一个新颖的包存储库。它是为 JVM 设计的,因此 github 和 bigbucket 中存在的任何库都可以直接在应用程序中使用。
allprojects {
repositories {
maven {
url “https://jitpack.io”
}
}
}
在模块的build.gradle文件中添加支持库,并在依赖项部分添加依赖项。添加了此依赖项,以便可以在应用程序中直接使用不同样式的 toast。
dependencies {
implementation ‘com.github.GrenderG:Toasty:1.4.2’
}
第 3 步:使用 activity_main.xml 文件
导航到app > res > layout > activity_main.xml并将以下代码添加到该文件。下面是activity_main.xml文件的代码。
XML
Java
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import es.dmoral.toasty.Toasty;
public class MainActivity
extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// We assign this method
// on OnClick() method
// in activity_main.xml file.
public void showToast(View v)
{
switch (v.getId()) {
// For Error type Toast
case R.id.button_error:
Toasty.error(this, "This is an error Toast", Toast.LENGTH_SHORT).show();
break;
// For Success type Toast
case R.id.button_success:
Toasty.success(this, "This is a success Toast", Toast.LENGTH_SHORT).show();
break;
// For Info type Toast
case R.id.button_info:
Toasty.info(this, "This is an info Toast", Toast.LENGTH_SHORT).show();
break;
// For Warning type Toast
case R.id.button_warning:
Toasty.warning(this, "This is a warning Toast", Toast.LENGTH_SHORT).show();
break;
// For Norma type Toast
// with an icon
case R.id.button_normal:
Toasty.normal(this, "This is a normal Toast", Toast.LENGTH_SHORT, ContextCompat.getDrawable(this, R.drawable.ic_android_black_24dp)).show();
break;
}
}
}
第 4 步:使用MainActivity。Java
转到MainActivity。 Java文件并参考以下代码。下面是MainActivity 的代码。 Java文件。代码中添加了注释以更详细地理解代码。
Java
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import es.dmoral.toasty.Toasty;
public class MainActivity
extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// We assign this method
// on OnClick() method
// in activity_main.xml file.
public void showToast(View v)
{
switch (v.getId()) {
// For Error type Toast
case R.id.button_error:
Toasty.error(this, "This is an error Toast", Toast.LENGTH_SHORT).show();
break;
// For Success type Toast
case R.id.button_success:
Toasty.success(this, "This is a success Toast", Toast.LENGTH_SHORT).show();
break;
// For Info type Toast
case R.id.button_info:
Toasty.info(this, "This is an info Toast", Toast.LENGTH_SHORT).show();
break;
// For Warning type Toast
case R.id.button_warning:
Toasty.warning(this, "This is a warning Toast", Toast.LENGTH_SHORT).show();
break;
// For Norma type Toast
// with an icon
case R.id.button_normal:
Toasty.normal(this, "This is a normal Toast", Toast.LENGTH_SHORT, ContextCompat.getDrawable(this, R.drawable.ic_android_black_24dp)).show();
break;
}
}
}
输出:
Note: Custom toast views are no longer recommended. When in the foreground, apps can use the makeText() function to produce a normal text toast, or they can create a Snackbar. Custom toast views will not be displayed when the owning application, targeting API level Build.VERSION_CODES#R or above is in the background. For now, Toasts built using makeText() or its variations will likewise return null here in apps targeting API level Build.VERSION CODES.R or above, unless they called setView with a non-null view.