투케이2K

726. (Android/Java) [Material] 머터리얼 디자인 사용해 Custom Snackbar 커스텀 스낵바 생성 본문

Android

726. (Android/Java) [Material] 머터리얼 디자인 사용해 Custom Snackbar 커스텀 스낵바 생성

투케이2K 2024. 1. 18. 20:23

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [Snackbar] : [BLACK : 커스텀 스낵바 메시지 출력]
    // -----------------------------------------------------------------------------------------
    // TODO [필요 의존성 및 style 설정]
    // -----------------------------------------------------------------------------------------
    /*
    implementation 'com.google.android.material:material:1.8.0' // TODO [컴파일, 빌드 타겟 33 인 경우]

    <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    </style>
    */
    // -----------------------------------------------------------------------------------------
    // TODO [호출 방법]
    // -----------------------------------------------------------------------------------------
    /*
    C_Ui_View.showSnackBarBlack(A_Intro.this, getWindow().getDecorView(), "알림", "내용", "확인");
    */
    // -----------------------------------------------------------------------------------------
    public static void showSnackBarBlack(Context mContext, View view, String title, String message, String button){
        // ===============================================================
        S_Log._F_(mContext, "BLACK : 커스텀 스낵바 메시지 출력", new String[] { "title :: " + String.valueOf(title), "message" + String.valueOf(message) });
        // ===============================================================

        try {
            new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
                @Override
                public void run() {

                    if (mContext != null){

                        // TODO [스낵바 표시 데이터]
                        String data = "";

                        if (C_Util.stringNotNull(title) == true){
                            data = "[" + title + "]";
                        }

                        if (C_Util.stringNotNull(message) == true){

                            // [이미 data 에 저장된 데이터가 있는 경우]
                            if (C_Util.stringNotNull(data) == true){
                                data += " : " + String.valueOf(message);
                            }
                            else {
                                data += String.valueOf(message);
                            }
                        }


                        // TODO [스낵바 표시 수행]
                        View contentLayout = view.findViewById(android.R.id.content); // [안드로이드 content View 지정]

                        //Snackbar.make(contentLayout, String.valueOf(data), Snackbar.LENGTH_LONG) // [레이아웃 / 메시지 / 표시 시간]
                        Snackbar.make(contentLayout, String.valueOf(data), Snackbar.LENGTH_INDEFINITE) // [레이아웃 / 메시지 / 표시 지속]
                                .setBackgroundTint(Color.BLACK) // [배경 색상]
                                .setTextColor(Color.WHITE) // [텍스트 색상]
                                .setActionTextColor(Color.YELLOW) // [버튼 색상 변경]
                                //.setDuration(10000) // [10 초 표시 유지]
                                .setTextMaxLines(20) // [텍스트 줄 표시 라인]
                                .setAction(String.valueOf(button), new View.OnClickListener() { // [버튼 클릭 이벤트 정의]
                                    @Override
                                    public void onClick(View view) {

                                    }
                                }).show();
                    }

                }
            }, 0);

        }
        catch (Exception e){
            S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e);
        }
    }

[결과 출력]

 

 

반응형
Comments