You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何为Toast添加颜色及特效?

为Toast添加颜色及特效的实现方案

一、修改Toast颜色(以Android平台为例)

1. 自定义布局实现(最灵活可控)

直接编写自定义布局文件,完全自定义背景、文字样式:

<!-- res/layout/custom_toast.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#FF6200EE"
    android:padding="16dp"
    android:orientation="horizontal"
    android:gravity="center">

    <TextView
        android:id="@+id/toast_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FFFFFF"
        android:textSize="14sp"/>
</LinearLayout>

在代码中加载该布局并显示:

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast, findViewById(R.id.toast_root));

TextView textView = layout.findViewById(R.id.toast_text);
textView.setText("自定义颜色的Toast");

Toast customToast = new Toast(getApplicationContext());
customToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
customToast.setDuration(Toast.LENGTH_LONG);
customToast.setView(layout);
customToast.show();

2. 反射修改系统Toast(快速修改)

无需自定义布局,直接修改系统Toast的样式:

Toast toast = Toast.makeText(this, "修改颜色的系统Toast", Toast.LENGTH_SHORT);
View toastView = toast.getView();
// 修改背景色
toastView.setBackgroundColor(Color.parseColor("#FF00C853"));
// 修改文字颜色
TextView textView = toastView.findViewById(android.R.id.message);
textView.setTextColor(Color.WHITE);
toast.show();

二、为Toast添加特效

1. 入场/退场动画

给Toast的View添加渐变、缩放动画:

Toast toast = Toast.makeText(this, "带动画的Toast", Toast.LENGTH_SHORT);
View toastView = toast.getView();

// 加载入场和退场动画
Animation animIn = AnimationUtils.loadAnimation(this, R.anim.toast_in);
Animation animOut = AnimationUtils.loadAnimation(this, R.anim.toast_out);

toastView.startAnimation(animIn);
// 入场动画结束后播放退场动画
animIn.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {}

    @Override
    public void onAnimationEnd(Animation animation) {
        toastView.startAnimation(animOut);
    }

    @Override
    public void onAnimationRepeat(Animation animation) {}
});

toast.show();

对应的动画资源文件:

<!-- res/anim/toast_in.xml -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:duration="300"/>
    <scale
        android:fromXScale="0.8"
        android:toXScale="1.0"
        android:fromYScale="0.8"
        android:toYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="300"/>
</set>
<!-- res/anim/toast_out.xml -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:duration="300"/>
    <scale
        android:fromXScale="1.0"
        android:toXScale="0.8"
        android:fromYScale="1.0"
        android:toYScale="0.8"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="300"/>
</set>

2. 自定义显示位置

通过setGravity调整Toast的显示位置,实现差异化展示:

Toast toast = Toast.makeText(this, "显示在顶部的Toast", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 100);
toast.show();

内容的提问来源于stack exchange,提问作者RileyPQ1462

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:40:35