본문 바로가기

Android/UI

[안드로이드] 둥근 테두리 Custom Dialog(커스텀 다이얼로그) 만들기

728x90
반응형
SMALL

 

 

코드 미리보기

 

 

dialog_background_round.xml


 

 

둥근 round 모양 테두리 custom dialog를 만들기 위한 background layout

 

<?xml version="1.0" encoding="utf-8"?>
<!-- 다이얼로그 배경 -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content">
    <item>
        <!-- 사각형 지정 -->
        <shape android:shape="rectangle">
            <!-- 각 모서리 dip 만큼 코너형식 -->
            <corners android:radius="8dip" />
            <!-- 배경색 -->
            <solid android:color="#fff" />
            <!-- 라인색 및 두께 -->
            <stroke android:width="0dp" android:color="#ff0000"/>
        </shape>
    </item>
</layer-list>


 

 

custom_dialog.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:background="@layout/dialog_background_round"
    android:layout_gravity="center"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="322dp"
    android:layout_height="155dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:textColor="#000"
            android:layout_margin="5dp"
            android:text="내용을 입력해 주세요."
            android:layout_weight="0.6"/>
        <EditText
            android:id="@+id/put_text"
            android:layout_margin="10dp"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1.7"/>
        <LinearLayout
            android:layout_marginRight="12dp"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:orientation="horizontal"
            android:layout_weight="1"
            android:layout_gravity="right">
            <Button
                android:text="cancle"
                android:textSize="10dp"
                android:id="@+id/btnCancle"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:scaleType="center"/>
            <Button
                android:text="save"
                android:textSize="10dp"
                android:layout_marginLeft="4dp"
                android:id="@+id/btnSave"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:scaleType="center"/>

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

 

 

 


 

 

CustomDialog.java


 

public class CustomDialog extends Dialog {

    private EditText et_text;
    private Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.custom_dialog);

        // 다이얼로그의 배경을 투명으로 만든다.
        Objects.requireNonNull(getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

        // 커스텀 다이얼로그의 각 위젯들을 정의한다.
        et_text = findViewById(R.id.put_text);
        Button saveButton = findViewById(R.id.btnSave);
        Button cancelButton = findViewById(R.id.btnCancle);

        // 버튼 리스너 설정
        saveButton.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View view) {
                // '확인' 버튼 클릭시
                // ...코드..
                Toast.makeText(mContext,et_text.getText().toString(), Toast.LENGTH_SHORT).show();
                // Custom Dialog 종료
                dismiss();
            }
        });
        cancelButton.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View view) {
                // '취소' 버튼 클릭시
                // ...코드..
                // Custom Dialog 종료
                dismiss();
            }
        });

    }

    public CustomDialog(Context mContext) {
        super(mContext);
        this.mContext = mContext;
    }


}

 


Dialog 호출


btnPlus.setOnClickListener(new Button.OnClickListener() {
     @Override
    public void onClick(View view) {
         // 버튼 클릭시 Custom Dialog 호출
         CustomDialog dlg = new CustomDialog(MainActivity.this);
         dlg.show();
    }
});

 


 

728x90
반응형
LIST