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


커스텀 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가 나오지 않아요. 어떻게 해야할까요?

  • 2016년 05월 27일에 작성됨

조회수 506


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>

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

  • 2016년 05월 28일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close