[#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 | 
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 | 
결과물


댓글
댓글 쓰기