取代Toast.makeText(this, “String“, Toast.LENGTH_SHORT).show();总是报错

新建一个Java


public void SM(View view, String str) {
        Snackbar snackbar = Snackbar.make(view, str, 800);
        View snackBarView = snackbar.getView();
        snackbar.setTextColor(Color.RED);//设置文字颜色
        snackbar.getView().setBackgroundResource(R.drawable.shadow);//背景颜色及形状。
        FrameLayout.LayoutParams params =
                new FrameLayout.LayoutParams(snackBarView.getLayoutParams().width,
                        snackBarView.getLayoutParams().height);
        //限制单排10个字。
        if (str.length() > 4 && str.length() <= 10) {
            params.width = (int) dipToPx(view.getContext(), (float) str.length() * 22);
        } else if (str.length() <= 4) {
            params.width = (int) dipToPx(view.getContext(), 5 * 22);
        } else {
            params.width = (int) dipToPx(view.getContext(), 10 * 22);
        }
        snackBarView.setLayoutParams(params);
        params.gravity = Gravity.CENTER | Gravity.TOP;
        //设置文字居中
        TextView message = snackBarView.findViewById(com.google.android.material.R.id.snackbar_text);
        message.setTextAlignment(View.TEXT_ALIGNMENT_GRAVITY);
        message.setGravity(Gravity.CENTER);
        message.setMaxLines(4);
        snackbar.show();
        //Toast.makeText(view.getContext(), str, Toast.LENGTH_SHORT).show();
    }
    //获取屏幕密度
    private float getDeviceDensity(Context context) {
        DisplayMetrics dm = context.getResources().getDisplayMetrics();
        return dm.density;
    }

    //dp转px
    private float dipToPx(Context context, float dip) {
        return dip * getDeviceDensity(context) + 0.5f;
    }

在shadow.xml里:


    
    
        
            
            
        
    
    
        
            
            
        
    

在需要弹窗的Activity里写:


ShowMsg showMsg = new ShowMsg();
    View vi;//全局变量
vi = findViewById(android.R.id.content);//OnCreate里写

//然后,在需要弹窗的位置
showMsg.SM(vi, "我是中国人,我爱中华人民共和国!");

你可能感兴趣的:(java,android,studio)