自定义Toast样式

简介: 所谓自定义一个Toast就是建立一个布局文件,然后使用一个view容器承载,然后显示出来。Toast毕竟只是起到一个提示作用,不必要放太多控件去填充,反而会显得内容很拥挤,一般一个标题,一张图片,一段简短文字即可。


自定义Toast样式



原生Toast样式

image.png


自定义Toast样式

image.png


创建样式

所谓自定义一个Toast就是建立一个布局文件,然后使用一个view容器承载,然后显示出来。Toast毕竟只是起到一个提示作用,不必要放太多控件去填充,反而会显得内容很拥挤,一般一个标题,一张图片,一段简短文字即可。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/white_radius_10">
    <LinearLayout
        android:layout_width="120dp"
        android:layout_height="100dp"
        android:gravity="center"
        android:orientation="vertical"
        android:layout_gravity="center">
        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/icon_error" />
        <TextView
            android:id="@+id/ErrorTips"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:gravity="center"
            android:text="密码错误,请重试!"
            android:textColor="#099A9F"
            android:textSize="15sp"
            android:ellipsize="end"/>
    </LinearLayout>
</FrameLayout>

封装

因为我们在开发中需要频繁使用Toast,所以使用一个类将其封装起来,复用其功能,增强代码可读性,可行性。根据自己的开发需求,可以向外暴露修改内容,图片,颜色,文字大小等方法,由于Toast内附控件较少,就可以直接将其控件ID和布局文件定义为常量引用。

public class ToastFormat {
    private Context context;
    private TextView tipsText;
    private Toast toast = null;
    private static final int ContentID = R.id.ErrorTips;
    private static final int LayoutID = R.layout.passworderror;
    public ToastFormat(Context context){
        this.context = context;
    }
    public void InitToast(){
        if (toast == null) {
            toast = new Toast(context);
            View view = LayoutInflater.from(context).inflate(LayoutID, null, false);
            tipsText = view.findViewById(ContentID);
            toast.setView(view);
        }
    }
    public void setGravity(int gravity){
        toast.setGravity(gravity, 0, 0);
    }
    public void setText(String tips){
        tipsText.setText(tips);
    }
    public void show(){
        toast.show();
    }
    public void setShowTime(int time){
        toast.setDuration(time);
    }
    public void setTextColor(int color){
        tipsText.setTextColor(context.getResources().getColor(color));
    }
    public void setTextSize(float size){
        tipsText.setTextSize(size);
    }
}


引用

定义对象

private ToastFormat format;

初始化

format = new ToastFormat(MainActivity.this);
format.InitToast();

设置显示文字内容

format.setText("自定义Toast");

最后显示 Toast

format.show();
相关文章
|
Web App开发 HTML5 移动开发
谷歌浏览器Chrome播放rtsp视频流解决方案
代码中的具体参数含义,大家可以移步这里: https://wiki.videolan.org/Documentation:WebPlugin/   找半天,HTML5的可以支持RTMP 但是无法播放RTSP,flash也止步于RTMP,最后同事推荐了个开源的好东东 VLC ,请教谷歌大神之后,这货果然可以用来让各浏览器(IE activex方式,谷歌、FF)实现播放RTSP视频流,那真是极好的~~ 废话不多说了附上参考文档和案例,大家自己看吧。
10981 1
|
10月前
|
机器学习/深度学习 编解码 计算机视觉
YOLOv11改进策略【注意力机制篇】| CVPR-2023 FSAS 基于频域的自注意力求解器 结合频域计算和卷积操作 降低噪声影响
YOLOv11改进策略【注意力机制篇】| CVPR-2023 FSAS 基于频域的自注意力求解器 结合频域计算和卷积操作 降低噪声影响
484 1
YOLOv11改进策略【注意力机制篇】| CVPR-2023 FSAS 基于频域的自注意力求解器 结合频域计算和卷积操作 降低噪声影响
|
Linux C++ iOS开发
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南(二)
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南
1990 2
|
10月前
|
SQL 关系型数据库 MySQL
Python中使用MySQL模糊查询的方法
本文介绍了两种使用Python进行MySQL模糊查询的方法:一是使用`pymysql`库,二是使用`mysql-connector-python`库。通过这两种方法,可以连接MySQL数据库并执行模糊查询。具体步骤包括安装库、配置数据库连接参数、编写SQL查询语句以及处理查询结果。文中详细展示了代码示例,并提供了注意事项,如替换数据库连接信息、正确使用通配符和关闭数据库连接等。确保在实际应用中注意SQL注入风险,使用参数化查询以保障安全性。
|
前端开发 UED
React 消息提示组件 Toast
本文从基础概念出发,逐步介绍如何在 React 中实现一个简单的 Toast 组件,包括基本功能、状态管理和样式设计。并通过具体代码示例,探讨了多个 Toast 同时显示、Toast 消失后立即重新显示、消失动画和样式冲突等常见问题及其解决方案。希望本文能帮助读者更好地理解和使用 Toast 组件,提升用户体验。
376 23
|
运维 监控 安全
高效运维管理:提升系统可靠性的策略与实践
本文将深入探讨高效运维管理的关键策略和实践,旨在帮助运维团队提高系统的可靠性、可用性和稳定性。通过分析常见的运维挑战,提出相应的解决方案,并结合实际案例进行说明,为读者提供一套行之有效的运维管理指南。无论是新手还是经验丰富的运维工程师,都能从中获得有价值的见解和实用技巧。
|
C语言 Perl
西门子S7-1200编程实例,电动机起保停控制梯形图如何编写?
本篇我们通过一个电动机起保停控制的实例,介绍S7-1200的使用方法,按下瞬时启动按钮I0.6,电动机Q0.0启动,按下瞬时停止按钮I0.7,电动机Q0.0停止。
西门子S7-1200编程实例,电动机起保停控制梯形图如何编写?
|
Android开发 数据格式 XML
深入理解Android 自定义attr Style styleable以及其应用
相信每一位从事Android开发的猿都遇到过需要自己去自定义View的需求,如果想通过xml指定一些我们自己需要的参数,就需要自己声明一个styleable,并在里面自己定义一些attr属性,这个过程相信大家都比较了解。当然,属性其实也不一定需要和View配合使用,比如我想通过一个Theme中的style对一个库进行一些简单参数的配置,这应该怎么做呢?我今天在封装一个库时
2554 0
|
存储 JSON 算法
docker私有镜像仓库的搭建及认证
docker私有镜像仓库的搭建及认证
987 1
|
Web App开发 缓存 网络协议
POST与GET的区别深度比较分析
HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。
695 0