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提示

原文地址:https://www.cnblogs.com/exmyth/p/4890775.html