zoukankan      html  css  js  c++  java
  • Android学习笔记_54_自定义 Widget (Toast)

      1、Toast控件:

      通过查看源代码,发现Toast里面实现的原理是通过服务Context.LAYOUT_INFLATER_SERVICE获取一个LayoutInflater布局管理器,从而获取一个View对象(TextView),设置内容将其显示.

    public static Toast makeText(Context context, CharSequence text, int duration) {
            Toast result = new Toast(context);
    
            LayoutInflater inflate = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);
            TextView tv = (TextView)v.findViewById(com.android.internal.R.id.message);
            tv.setText(text);
            
            result.mNextView = v;
            result.mDuration = duration;
    
            return result;
        }

      定义布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="200dip"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    
        <ImageView
            android:id="@+id/iv_my_toast"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/notification" />
    
        <TextView
            android:id="@+id/tv_my_toast"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:textSize="18sp"
            android:text="text"
            />
    
    </LinearLayout>

      自定义MyToast类:

    public class MyToast {
    
        /**
         * 显示自定义的土司
         * @param context 上下文
         * @param iconid 图标的id
         * @param text 显示的文本
         */
        public static void showToast(Context context,int iconid, String text){
            View view = View.inflate(context, R.layout.my_toast, null);
               TextView tv = (TextView) view.findViewById(R.id.tv_my_toast);
            ImageView iv = (ImageView) view.findViewById(R.id.iv_my_toast);
            iv.setImageResource(iconid);
            tv.setText(text);
            Toast toast = new Toast(context);
            toast.setDuration(0);
            toast.setView(view);
            toast.show();
        }
        
    }
  • 相关阅读:
    go语言基础之安装go开发环境和beego
    mysql之事件的开启和调用
    系统和应用监控指标
    常用的17个运维监控系统(必备知识)
    Kafka Java API操作topic
    Linux安装mysql8.0
    mybatis+Oracle 批量插入数据,有数据做更新操作
    ORACLE数据库导出表,字段名,长度,类型,字段注释,表注释语句
    ORACLE 按时间创建分区表
    oracle创建表空间和用户
  • 原文地址:https://www.cnblogs.com/lbangel/p/3578334.html
Copyright © 2011-2022 走看看