code

Android 대화 상자의 중앙 메시지

codestyles 2020. 11. 9. 08:11
반응형

Android 대화 상자의 중앙 메시지


대화 상자의 메시지 텍스트를 가운데 정렬하고 싶습니다.


고유 한 TextView 개체를 만든 다음 팝업 작성기에 View로 제공합니다.

AlertDialog.Builder popupBuilder = new AlertDialog.Builder(this);
TextView myMsg = new TextView(this);
myMsg.setText("Central");
myMsg.setGravity(Gravity.CENTER_HORIZONTAL);
popupBuilder.setView(myMsg);

다른 모든 텍스트 매개 변수 (스타일, 색상, 크기 ...)를 제어 할 수 있습니다. 여백을 제어하기 위해 프로그래밍 방식으로 LinearLayout을 만들고 LayoutParams를 설정 한 다음 TextView를 넣을 수 있습니다.


물론 원본 텍스트보기의 중력을 언제든지 설정할 수 있습니다. 이렇게하면 서식 및 패딩에 대해 걱정할 필요가 없습니다.

예를 들면

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title");
builder.setMessage("Message");
builder.setPositiveButton("OK", null);
AlertDialog dialog = builder.show();

// Must call show() prior to fetching text view
TextView messageView = (TextView)dialog.findViewById(android.R.id.message);
messageView.setGravity(Gravity.CENTER);

Chase의 답변을 바탕으로 제목을 중앙에 배치하는 방법은 다음과 같습니다. 이것이 가장 쉬운 방법이라고 생각합니다. Android가 기본적으로 중앙에 있지 않거나 간단한 생성자 매개 변수로 만드는 이유는 저를 넘어 섭니다.

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("My Title");
builder.setMessage("My message");
builder.setPositiveButton("OK", listener);
AlertDialog dialog = builder.show();

// Must call show() prior to fetching views
TextView messageView = (TextView)dialog.findViewById(android.R.id.message);
messageView.setGravity(Gravity.CENTER);

TextView titleView = (TextView)dialog.findViewById(context.getResources().getIdentifier("alertTitle", "id", "android"));
if (titleView != null) {
    titleView.setGravity(Gravity.CENTER);
}

우리는 같이 사용할 수 있습니다.

public static void showAlert(Activity activity, String message) {

        TextView title = new TextView(activity);
        // You Can Customise your Title here 
        title.setText("Your Title Here");
        //title.setBackgroundColor(Color.DKGRAY);
        title.setPadding(10, 10, 10, 10);
        title.setGravity(Gravity.CENTER);
        title.setTextColor(Color.WHITE);
        title.setTextSize(20);


        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        builder.setCustomTitle(title);
        //builder.setIcon(R.drawable.alert_36);

        builder.setMessage(message);

        builder.setCancelable(false);
        builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();

            }

        });

        AlertDialog alert = builder.show();
        TextView messageText = (TextView)alert.findViewById(android.R.id.message);
        messageText.setGravity(Gravity.CENTER);
        messageText.setTextColor(Color.RED);

    }

이 코드를 시도해 볼 수 있습니다

public void Info(){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Info Aplication");
    builder.setIcon(R.drawable.info_adp);
    builder.setMessage("Jakarta Hospital");
    builder.setCancelable(false);
    builder.setPositiveButton("Exit", null);
    AlertDialog dialog = builder.show();
    TextView messageView = (TextView)dialog.findViewByI(android.R.id.message);
    messageView.setGravity(Gravity.CENTER);
}

이 방법을 사용하면 대화 제목과 메시지가 중앙에 나타납니다.

public static void openDialog(Context context, String message) {

    TextView title = new TextView(context);
    // You Can Customise your Title here
    title.setText("Information Message");
    title.setBackgroundColor(Color.BLACK);
    title.setPadding(10, 15, 15, 10);
    title.setGravity(Gravity.CENTER);
    title.setTextColor(Color.WHITE);
    title.setTextSize(22);

    AlertDialog alertDialog = new AlertDialog.Builder(context).create();
    alertDialog.setCustomTitle(title);
    alertDialog.setMessage(message);

    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {

        }
    });
    alertDialog.show();

    // You Can Customise your Message here
    TextView messageView = (TextView) alertDialog
            .findViewById(android.R.id.message);
    messageView.setGravity(Gravity.CENTER);

}

without using textview. worked for me.

styles.xml

<style name="CustomAlertDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="android:gravity">center</item>
    </style>

Alertdialog

final AlertDialog builder = new AlertDialog.Builder(activity, 
R.style.CustomAlertDialog)

try this in your TextView:

android:gravity = "center_vertical|center"

참고URL : https://stackoverflow.com/questions/4954130/center-message-in-android-dialog-box

반응형