AlertDialog의 테마는 어떻게 바꿀까요?

조회수 7054회

커스텀 AlertDialog를 만드려고하는데요. styles.xml 에 아래 코드를 추가했어요.

@drawable/color_panel_background

color_panel_background.9.png 를 drawable폴더에 넣고. 안드로이드 SDK의 res폴더에도 있어요. 

mainActivity에서

package com.customdialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;

public class CustomDialog extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        this.setTheme(R.style.CustomAlertDialog);
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("HELLO!");
        builder .setCancelable(false)
          .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
               //MyActivity.this.finish();
           }
       })
       .setNegativeButton("No", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
               //dialog.cancel();
           }
       });

        AlertDialog alertdialog = builder.create();
        alertdialog.show();
    }
}

현재 context에 테마를 설정해서 AlertDialog에 테마를 적용했는데
앱에서는 커스텀 AlertDialog가 나오지 않아요. 어떻게 해야할까요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    Dialog.java에서 ContextThemeWrapper를 사용하세요.

    AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AlertDialogCustom));
    

    이런식으로요. 그리고 스타일은

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="AlertDialogCustom" parent="@android:style/Theme.Dialog">
            <item name="android:textColor">#00FF00</item>
            <item name="android:typeface">monospace</item>
            <item name="android:textSize">10sp</item>
        </style>
    </resources>
    

    이런 식으로 원하는 스타일을 지정해주세요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)