티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

How can I change default dialog button text color in android 5

어떻게 안드로이드 5에서 기본 대화상자 버튼 텍스트 색상을 변경하는 방법하나요?

 문제 내용 

I have many alert dialogs in my app. It is a default layout but I am adding positive and negative buttons to the dialog. So the buttons get the default text color of Android 5 (green). I tried to changed it without success. Any idea how to change that text color?

제 앱에는 많은 경고 대화상자가 있습니다. 이것은 기본 레이아웃이지만 대화 상자에 긍정 및 부정 버튼을 추가하고 있습니다. 그래서 버튼은 Android 5의 기본 텍스트 색상 (녹색)을 갖습니다. 그 색상을 변경하려고 시도했지만 실패했습니다. 그 색상을 변경하는 방법이 있을까요?

 

My Custom dialog:

제 커스텀 대화상자(Dialog):
public class MyCustomDialog extends AlertDialog.Builder {

    public MyCustomDialog(Context context,String title,String message) {
        super(context);

        LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
        View viewDialog = inflater.inflate(R.layout.dialog_simple, null, false);

        TextView titleTextView = (TextView)viewDialog.findViewById(R.id.title);
        titleTextView.setText(title);
        TextView messageTextView = (TextView)viewDialog.findViewById(R.id.message);
        messageTextView.setText(message);

        this.setCancelable(false);

        this.setView(viewDialog);

    } }

 

Creating the dialog:

다이얼로그 생성하기:
MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage);
builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            ...
                        }
}).show();

 

That negativeButton is a default dialog button and takes the default green color from Android 5 Lollipop.

그 negativeButton은 기본 대화상자 버튼이며, Android 5 롤리팝의 기본 녹색 색상을 적용합니다.

 

Many thanks

많은 감사드립니다'

 

Custom dialog with green button

 

 

 높은 점수를 받은 Solution 

Here's a natural way to do it with styles:

다음은 스타일을 사용하여 자연스럽게 수행하는 방법입니다.

 

If your AppTheme is inherited from Theme.MaterialComponents, then:

만약 AppTheme이 Theme.MaterialComponents에서 상속되었다면:
<style name="AlertDialogTheme" parent="ThemeOverlay.MaterialComponents.Dialog.Alert">
    <item name="buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item>
    <item name="buttonBarPositiveButtonStyle">@style/PositiveButtonStyle</item>
</style>

<style name="NegativeButtonStyle" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
    <item name="android:textColor">#f00</item>
</style>

<style name="PositiveButtonStyle" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
    <item name="android:textColor">#00f</item>
</style>

 

If your AppTheme is inherited from Theme.AppCompat:

만약 AppTheme이 Theme.AppCompat으로부터 상속 받았다면:
<style name="AlertDialogTheme" parent="ThemeOverlay.AppCompat.Dialog.Alert">
    <item name="buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item>
    <item name="buttonBarPositiveButtonStyle">@style/PositiveButtonStyle</item>
</style>

<style name="NegativeButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
    <item name="android:textColor">#f00</item>
</style>

<style name="PositiveButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
    <item name="android:textColor">#00f</item>
</style>

 

Use your AlertDialogTheme in your AppTheme

AppTheme에서 AlertDialogTheme을 사용하세요.
<item name="alertDialogTheme">@style/AlertDialogTheme</item>

 

or in constructor

해당 클래스의 생성자에도 설정할 수 있습니다.
androidx.appcompat.app.AlertDialog.Builder(context, R.style.AlertDialogTheme)

 

or If you are using MaterialAlertDialogBuilder then use

또는 만약 MaterialAlertDialogBuilder를 사용하는 경우에는 다음을 사용하세요.
<item name="materialAlertDialogTheme">@style/AlertDialogTheme</item>

 

 

 가장 최근 달린 Solution 

We can create extension function and call the extension function after dialog.show() to customise Alert Dialog button colors.

우리는 Alert Dialog 버튼 색상을 사용자 정의하는 확장 기능을 만들고, 다이얼로그.show() 이후에 확장 기능을 호출하여 Alert Dialog 버튼 색상을 사용자 정의할 수 있습니다.
fun AlertDialog.makeButtonTextBlue() {
this.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(ContextCompat.getColor(context, R.color.blue))
this.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(ContextCompat.getColor(context, R.color.blue))
}

 

Usage:

사용법:
dialog.show()
dialog.makeButtonTextBlue()

 

 

출처 : https://stackoverflow.com/questions/27965662/how-can-i-change-default-dialog-button-text-color-in-android-5

반응형
댓글
공지사항
최근에 올라온 글