Android 建立属于你自己的Toast

本文介绍如何在Android应用中实现四种不同类型的Toast效果,包括默认显示、自定义位置、带图片及完全自定义样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  Toast用于向用户显示一些帮助/提示。下面我做了4中效果,来说明Toast的强大,定义一个属于你自己的Toast。

1.默认效果

这里写图片描述

2.自定义显示位置效果

这里写图片描述

3.带图片效果

这里写图片描述

4.完全自定义效果

这里写图片描述

完整代码:

MainActivity.class

package com.ownchan.toastdemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Toast mToast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.default_toast).setOnClickListener(this);
        findViewById(R.id.define_toast).setOnClickListener(this);
        findViewById(R.id.image_toast).setOnClickListener(this);
        findViewById(R.id.complete_define_toast).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.default_toast:
                Toast.makeText(getApplicationContext(), "Default Toast", Toast.LENGTH_SHORT).show();
                break;
            case R.id.define_toast:
                mToast = Toast.makeText(getApplicationContext(),
                        "Define Toast", Toast.LENGTH_LONG);
                mToast.setGravity(Gravity.CENTER, 0, 0);
                mToast.show();
                break;
            case R.id.image_toast:
                mToast = Toast.makeText(getApplicationContext(),
                        "Image Toast", Toast.LENGTH_LONG);
                mToast.setGravity(Gravity.CENTER, 0, 0);
                LinearLayout toastView = (LinearLayout) mToast.getView();
                ImageView imageCodeProject = new ImageView(getApplicationContext());
                imageCodeProject.setImageResource(R.mipmap.ic_launcher);
                toastView.addView(imageCodeProject, 0);
                mToast.show();
                break;
            case R.id.complete_define_toast:
                View layout = LayoutInflater.from(getApplicationContext()).inflate(R.layout.view_center_toast, null);
                TextView toastText1 = (TextView) layout.findViewById(R.id.view_bottom_toast_txt);
                toastText1.setText("Complete Define Toast");
                Toast toast = new Toast(getApplicationContext());
                toast.setDuration(Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER, 0, 0);
                toast.setView(layout);
                toast.show();
                break;
            default:
        }
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/default_toast"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:background="#a1a1a1"
        android:layout_marginTop="100dip"
        android:layout_gravity="center_horizontal"
        android:gravity="center"
        android:text="Default Toast" />

    <TextView
        android:id="@+id/define_toast"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:background="#a1a1a1"
        android:layout_marginTop="20dip"
        android:layout_gravity="center_horizontal"
        android:gravity="center"
        android:text="Define Toast" />

    <TextView
        android:id="@+id/image_toast"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:background="#a1a1a1"
        android:layout_marginTop="20dip"
        android:layout_gravity="center_horizontal"
        android:gravity="center"
        android:text="Image Toast" />

    <TextView
        android:id="@+id/complete_define_toast"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:background="#a1a1a1"
        android:layout_marginTop="20dip"
        android:layout_gravity="center_horizontal"
        android:gravity="center"
        android:text="Complete Define Toast" />

</LinearLayout>

view_center_toast.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/shape_toast_circle"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"
        android:scaleType="center"/>

    <TextView
        android:id="@+id/view_bottom_toast_txt"
        android:layout_width="145dp"
        android:layout_height="34dp"
        android:background="#00ffffff"
        android:gravity="center"
        android:textColor="#ffffff"
        android:textSize="13sp" />

</LinearLayout>

shape_toast_circle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <solid android:color="#73000000" />
    <corners android:radius="4dp" />
    <padding
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp" />
</shape>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值