• Android自定义Toast宽度无法设置问题解决


    在项目中想要实现一个头部的toast提示效果,类似下图 
    toast头部显示

    再实现的过程中发现,如果直接通过修改Toast的View布局的父控件宽度是无法实现效果的,后来是通过直接用代码指定父控件内部的textview的宽度实现了。下面是具体的代码:

    
    private static void makeToast(String msg) {
        if (toastView == null) {
            LayoutInflater inflater = (LayoutInflater) AppApplication.getInstance().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            params = new LinearLayout.LayoutParams(AppApplication.mScreenWidth, ViewGroup.LayoutParams.MATCH_PARENT);
            toastView = inflater.inflate(R.layout.toast_custom_prompt, null);
        }
        TextView tv = (TextView) toastView.findViewById(R.id.tvTitleToast);
        tv.setLayoutParams(params);
        tv.setText(msg);
    
        toast = new Toast(AppApplication.getInstance());
        float hOffset = AppApplication.getInstance().getResources().getDimension(R.dimen.common_title_height);
        toast.setGravity(Gravity.TOP, 0, (int) hOffset);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(toastView);
        toast.show();
    }
    

    上面的方式使用到了我自己写的一个计算屏幕宽高的小方法:

    
    private  void calcScreenSize() {
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        mScreenWidth = dm.widthPixels;
        mScreenHeight = dm.heightPixels;
        AppApplication.mScreenWidth = mScreenWidth;
        AppApplication.mScreenHeight = mScreenHeight;
    }
    

    通过上面的步骤就能在标题栏下方显示一个自定义的toast提示

  • 相关阅读:
    gvim小操作
    gvim2笔记
    用JavaScript实现MD5,SHA1加密
    MYSQL性能优化(转)
    开源了,开放我的仿ext控件集
    个人js作品集,仿ext风格(改)
    sql查询 注意事项
    共轭矩阵
    wchar 转 int
    对象不能从 DBNull 转换为其他类型
  • 原文地址:https://www.cnblogs.com/exmyth/p/4890775.html
Copyright © 2020-2023  润新知