[#117][안드로이드] AlertDialog에 EditText 넣기, EditText margin으로 길이 줄이기

[안드로이드] AlertDialog에 EditText 넣기, EditText margin으로 길이 줄이기

1. EditText 생성 : final EditText et = new EditText(getContext());
2. AlertDialog.Builder 생성 및 setting
 : EditText 넣는 부분 setView(et)
final EditText et = new EditText(getContext());
final AlertDialog.Builder alt_bld = new AlertDialog.Builder(getContext(),R.style.MyAlertDialogStyle);
    alt_bld.setTitle("닉네임 변경")
    .setMessage("변경할 닉네임을 입력하세요")
    .setIcon(R.drawable.check_dialog_64)
    .setCancelable(false)
    .setView(et)
    .setPositiveButton("확인"new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
        String value = et.getText().toString();
        user_name.setText(value);
        }
    });
AlertDialog alert = alt_bld.create();
alert.show();
cs



이렇게 한 후 문제점.
EditText 길이가 너무 길다 => Margin 속성 필요
    FrameLayout container = new FrameLayout(getContext());
    FrameLayout.LayoutParams params = new  FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    params.leftMargin = getResources().getDimensionPixelSize(R.dimen.dialog_margin);
    params.rightMargin = getResources().getDimensionPixelSize(R.dimen.dialog_margin);
    et.setLayoutParams(params);
    container.addView(et);
    final AlertDialog.Builder alt_bld = new AlertDialog.Builder(getContext(),R.style.MyAlertDialogStyle);
    alt_bld.setTitle("닉네임 변경").setMessage("변경할 닉네임을 입력하세요").setIcon(R.drawable.check_dialog_64).setCancelable(
            false).setView(container).setPositiveButton("확인",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    String value = et.getText().toString();
                    user_name.setText(value);
                }
            });
    AlertDialog alert = alt_bld.create();
    alert.show();
cs
1. FrameLayout과 LayoutParams 생성 : FrameLayout , FrameLayout.LayoutParams
2. params에 margin 추가 : params.leftMargin , params.rightMargin
3. EditText에 params 속성 적용하기 : et.setLayoutParams(params);
4. FrameLayout에 EditText 추가하기 : container.addView(et);
5. AlertDialog에 적용하기 : setView(container)


**params에 적용한 R.dimen.dialog_margin
생성 경로 : main/res/values/dimen.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="dialog_margin">25dp</dimen>
</resources>
cs


**dialog custom R.style.MyAlertDialogStyle style
생성 경로 : main/res/values/style.xml
<resources>
    <!-- Base application theme. -->
    <style name="MyAlertDialogStyle" parent="@style/Theme.AppCompat.Dialog.Alert">
        <item name="android:textColor">@color/white</item>
        <item name="android:typeface">monospace</item>
        <item name="android:background">@color/maincolor</item>
    </style>
</resources>
cs

결과물















댓글

가장 많이 본 글