투케이2K

711. (Android/Java) AlertDialog Custom Height , Width Setting 커스텀 팝업창 사이즈 지정 - Create TextView 본문

Android

711. (Android/Java) AlertDialog Custom Height , Width Setting 커스텀 팝업창 사이즈 지정 - Create TextView

투케이2K 2023. 12. 14. 19:01

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

 

        // ---------------------------------------------------------------
        // [로직 처리 실시]
        // ---------------------------------------------------------------
        try {

            // [팝업창 생성 실시]
            new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
                @Override
                public void run() {

                    // TODO [디스플레이 화면 높이, 너비 구하기]
                    Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
                    DisplayMetrics outMetrics = new DisplayMetrics();
                    display.getMetrics(outMetrics);

                    float density = getResources().getDisplayMetrics().density;
                    float dpHeight = outMetrics.heightPixels / density; // [디스플레이 화면 높이 : height : dp 단위]
                    float dpWidth = outMetrics.widthPixels / density; // [디스플레이 화면 너비 : width : dp 단위]


                    // TODO [UI 생성 실시]
                    final TextView messageText = new TextView( A_Intro.this );
                    messageText.setPadding(50,50,50,50); // [패딩 지정]
                    messageText.setMovementMethod(new ScrollingMovementMethod()); // [스크롤 지정]
                    messageText.setTextSize(Dimension.DP, 30); // [텍스트 폰트 사이즈]
                    messageText.setTextColor(Color.BLACK); // [텍스트 색상]
                    messageText.setGravity(Gravity.CENTER); // [텍스트 정렬 위치]

                    messageText.setHeight(outMetrics.widthPixels); // [텍스트 높이 지정]
                    messageText.setWidth(outMetrics.widthPixels); // [텍스트 너비 지정]

                    messageText.setText("테스트 팝업 입니다."); // [메시지 지정]


                    // TODO [AlertDialog 팝업창 생성]
                    AlertDialog.Builder builder = new AlertDialog.Builder(A_Intro.this);
                    // builder.setIcon(R.drawable.ic_launcher_foreground); // [팝업창 표시 아이콘]
                    builder.setTitle("알 림"); // [팝업창 타이틀 지정]
                    //builder.setMessage("테스트 팝업 입니다."); // [팝업창 메시지 지정]
                    builder.setView(messageText); // [텍스트 뷰 지정]
                    builder.setCancelable(false); // [외부 레이아웃 클릭시도 팝업창이 사라지지않게 설정]
                    builder.setPositiveButton("확 인", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // -----------------------------------------
                            // TODO [확인 버튼 클릭 이벤트 처리]
                            // -----------------------------------------
                        }
                    });

                    final AlertDialog dialog = builder.create();
                    dialog.show(); // [팝업창 활성 표시]


                    // TODO [팝업창 레이아웃 사이즈 변경]
                    /*
                    try {

                        WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
                        Window window = dialog.getWindow();
                        lp.copyFrom(window.getAttributes());

                        // [전체 화면 설정]
                        //lp.width = WindowManager.LayoutParams.MATCH_PARENT;
                        //lp.height = WindowManager.LayoutParams.MATCH_PARENT;

                        // [특정 크기 사이즈 지정 : dp 단위]
                        lp.width =  (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpWidth, getResources().getDisplayMetrics());
                        lp.height = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpWidth, getResources().getDisplayMetrics());

                        // [설정 적용]
                        window.setAttributes(lp);

                    }
                    catch (Exception e){}
                    // */

                }

            }, 5000);

        }
        catch (Exception e){
            e.printStackTrace();
        }

 

반응형
Comments