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
'Android > UI' 카테고리의 다른 글
[안드로이드] layout 데이터 바인딩 string 값 비교 (0) | 2021.01.25 |
---|---|
[안드로이드] 키보드 숨기기 (0) | 2021.01.11 |
[안드로이드]http URL 주소로 이미지 띄우기 (0) | 2020.06.11 |
[안드로이드] 실시간 차트(그래프), Real-time Chart 그리기 (11) | 2020.03.16 |