Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Android에서 기본 AlertDialog(경고 대화상자)의 너비와 높이를 제어하는 방법

이 튜토리얼에서는 Android에서 기본 AlertDialog(경고 대화상자)의 너비와 높이를 자유롭게 조절하는 방법을 단계별로 알아봅니다. 기본 대화상자는 화면 크기에 맞춰 자동으로 표시되지만, WindowManager.LayoutParams를 활용하면 원하는 크기로 손쉽게 변경할 수 있습니다.

1단계: 새 프로젝트 생성

Android Studio에서 File → New Project로 이동한 후, 필요한 모든 세부 정보를 입력하여 새 프로젝트를 생성합니다.

2단계: 레이아웃 파일 작성

res/layout/activity_main.xml 파일에 아래 코드를 추가합니다. 화면 중앙에 대화상자를 띄우는 버튼 하나를 배치합니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/relativeLayout"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Show Alert Dialog"
        android:layout_centerInParent="true" />
</RelativeLayout>

3단계: MainActivity에 대화상자 크기 조절 로직 추가

src/MainActivity.java 파일에 아래 코드를 작성합니다. 핵심은 alertDialog.show() 호출 이후 WindowManager.LayoutParams를 이용해 대화상자 창의 너비와 높이를 설정하는 부분입니다.

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity {
    Button button;
    RelativeLayout relativeLayout;
    Context context;
    Activity myActivity;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        relativeLayout = findViewById(R.id.relativeLayout);
        context = getApplicationContext();
        button = findViewById(R.id.button);
        myActivity = MainActivity.this;

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(myActivity);
                builder.setTitle("My Action Bar");
                builder.setMessage("This is my custom Action bar, do you like it?");
                builder.setPositiveButton("Yes", null);
                builder.setNegativeButton("No", null);

                AlertDialog alertDialog = builder.create();
                alertDialog.show();

                // 대화상자의 너비와 높이를 화면 전체 크기로 설정
                WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
                layoutParams.copyFrom(alertDialog.getWindow().getAttributes());
                layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
                layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
                alertDialog.getWindow().setAttributes(layoutParams);
            }
        });
    }
}

위 코드에서 MATCH_PARENT 대신 특정 픽셀 값(예: 800)을 지정하면 고정된 크기의 대화상자를 만들 수도 있습니다. 단, 크기 변경은 반드시 show() 메서드 호출 이후에 적용해야 정상적으로 동작합니다.

4단계: AndroidManifest.xml 확인

androidManifest.xml 파일은 아래와 같습니다. 별도의 권한 추가 없이 기본 설정 그대로 사용합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 Android 스마트폰을 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바에서 Android에서 기본 AlertDialog(경고 대화상자)의 너비와 높이를 제어하는 방법 Run 아이콘을 클릭합니다. 실행할 모바일 기기를 선택하면 앱이 설치되고, 다음과 같은 기본 화면이 표시됩니다.

Android에서 기본 AlertDialog(경고 대화상자)의 너비와 높이를 제어하는 방법


Android에서 기본 AlertDialog(경고 대화상자)의 너비와 높이를 제어하는 방법

버튼을 누르면 경고 대화상자가 나타나며, 화면 전체 크기(MATCH_PARENT)로 확장되어 표시되는 것을 확인할 수 있습니다. 이 방식을 응용하면 대화상자를 원하는 크기로 자유롭게 디자인할 수 있습니다.