앱에서 사용하는 거의 대부분의 alert는 Android의 system alert dialog를 그대로 가져와 사용했다.
제목이며 메세지며 길지 않은 내용이었기에 크게 UI적으로 이상함을 느끼지 못했었다.
이번에 여러줄의 줄바꿈이 있는 dialog를 만들면서 alert dialog는 가운데 정렬을 지원하지 않는다는걸 알게 되었다.
텍스트가 많아지면 많아질수록 title과 message의 경계가 모호해지고 비좁은 방에 정리되지 않은 채 꽉꽉 채워진 지저분한 느낌을 받았다.
이 지저분함을 해결하기 위해 system alert의 본형을 잃지 않는 custom dialog를 생성하기로 했다.
기존에 사용하던 코드
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("제목의 첫 번째 라인 \n제목의 두 번째 라인")
.setMessage("message의 첫 번째 라인 \n message의 두 번째 라인. \n message의 세 번째 라인")
.setNeutralButton("허용 안함", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// 허용 안함 클릭 함수
}
})
.setPositiveButton("허용", (dialogInterface, i) -> {
// 허용 클릭 함수
})
.create();
alertDialog.show();
수정된 코드
AlertDialog.Builder builder = new AlertDialog.Builder(this);
View dialogView = getLayoutInflater().inflate(R.layout.custom_alert, null);
builder.setView(dialogView);
TextView title = dialogView.findViewById(R.id.title);
title.setText("제목의 첫 번째 라인 \n제목의 두 번째 라인");
TextView message = dialogView.findViewById(R.id.message);
message.setText("message의 첫 번째 라인 \n message의 두 번째 라인 \n message의 세 번째 라인");
'''
layout 추가 작업
'''
builder.setNeutralButton("허용 안함", (dialogInterface, i) -> // 허용 안함 클릭 함수)
.setPositiveButton("허용", (dialogInterface, i) -> {
// 허용 버튼 클릭 함수
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="title"
android:textColor="@color/white"
android:textAlignment="center"
android:gravity="center"/>
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="message"
android:textColor="@color/white"
android:textAlignment="center"
android:gravity="center"/>
</LinearLayout>
custom_alert라는 새로운 layout을 추가해주었고 Activity에서 AlertDialog에 해당 layout을 넣어주었고 추가적으로 바꾸고 싶은 것들을 바꿔주니 기존의 system alert를 헤치지 않는 선에서 폰트, 패딩값, 정렬등을 내가 원하는 값으로 수정할 수 있는 간단한 custom alert가 완성되었다.
'Android' 카테고리의 다른 글
[Android / Java] Fastlane으로 테스트 앱 자동 배포(CD) 구축하기 (0) | 2023.03.03 |
---|---|
[Android / JAVA] Firebase Remote Config로 강제/선택 업데이트 팝업 관리하기 (1) | 2023.02.07 |
Android(Java)에서 받은 encodedUri를 webView(javascript)에서 파일로 변환하기 (2) | 2023.02.02 |