[안드로이드] Dialog style customize 하는 법

프로그래밍/Android 관련2017. 12. 23. 23:16

안녕하세요. 개발자 드리머즈입니다.




dialg style customize하는 법을 배우면 좋을 것 같아서 찾아봤습니다.


dialog customize를 위해서 먼저 레이아웃을 결정해야 합니다.

두 가지 방법이 있습니다.


방법1 : 기본적으로 제공받는 레이아웃을 사용하기

방법2 : 커스텀 레이아웃을 사용하기


AlertDialog에서 기본적으로 제공하는 간단한 레이아웃으로 원하는 것을 표현할 수 없는 경우라면 방법2를 사용하면 되는데, 저의 경우에는 AlertDialog에서 기본적으로 제공하는 간단한 레이아웃으로도 충분하므로 방법1을 사용하겠습니다. 그래서 레이아웃 설정을 따로 할 필요가 없습니다.



*소스 코드

public class MyCustomDialogFragment extends DialogFragment {

public static final String DIALOG_MESSAGE = "dialogMessage";
public static final String POSITIVE_BUTTON_APP_FINISH = "positiveButtonAppFinish";

String dialogMessage = "not set";

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

Bundle bundle = getArguments();
if (bundle != null) {
dialogMessage = bundle.getString(DIALOG_MESSAGE);
}

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

builder.setMessage(dialogMessage)
.setTitle("Title Test")
.setIcon(R.drawable.kakaoaccount_icon)
.setPositiveButton("Positive", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {

}
})
.setNegativeButton("Negative", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {

}
});


return builder.create();
}
}

*실행 화면

위와 같은 상태에서

간단하게 AlertDialog의 배경색, 타이틀 글자 색, 메시지 글자 색, 버튼 글자 색을 변경하려고 합니다.


그러려면 먼저 AlertDialog.Builder 객체를 생성할 때 아래와 같이 style을 인자로 주어야 합니다.

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.MyCustomDialogStyle);


그리고 핵심인 styles.xml에 MyCustomDialogStyle이라는 style을 생성하여
attribute를 설정하면 됩니다.


styles.xml

<resources>

<style name="MyCustomDialogStyle" parent="@android:style/Theme.DeviceDefault.Dialog.NoActionBar.MinWidth">


<!-- Used for the background
<item name="android:background">#ffffff</item>-->


<!-- Used for the title and text
<item name="android:textColorPrimary">#00ff00</item> -->

<!-- title color + button color? -->
<item name="android:textColor">#ff0000</item>

</style>

</resources>


그런데 생각처럼 style에서.. 생각처럼 원하는 것처럼 원하는 것만 변경되지 않네요.

타이틀이랑 메시지 색이 같이 변경되거나

타이틀이나 버튼 색이 같이 변경됩니다.


자료를 좀 더 찾아봐야겠습니다..




*참고

stackoverflow 질문글 : https://stackoverflow.com/questions/35626934/change-title-color-of-alertdialog-on-below-android-5-0

stackoverflow 질문글 : https://stackoverflow.com/questions/8336206/android-how-can-i-change-the-color-of-header-in-my-custom-dialog

stackoverflow 질문글(버튼 색 변경) : https://stackoverflow.com/questions/17901072/changing-alertdialog-builder-button-color

https://stackoverflow.com/questions/35904684/style-applied-to-an-alertdialog-not-working-correctly

티스토리 블로그 참고글 : http://h2110.tistory.com/37




작성자

Posted by 드리머즈

관련 글

댓글 영역