728x90
반응형
SMALL
안드로이드 커스텀 다이얼로그 띄우기
안드로이드를 작업하다보면 다이얼로그 팝업으로 표현 할 때가 있다.
그런 경우에 사용할 수 있는 커스텀 다이얼로그를 만들어 보도록 하자.
위 사진과 같은 다이얼을 한 번 띄어 보도록 하겠습니다.
커스텀 다이얼로그 XML 코드입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="8dp"
android:background="#fff"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="8dp"
android:gravity="center"
android:text="커스텀 다이얼로그"
android:textColor="#000"
android:textSize="18dp" />
<EditText
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="이름을 입력해주세요." />
</LinearLayout>
<LinearLayout
android:layout_marginTop="8dp"
android:padding="8dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_ok"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:layout_weight="1"
android:background="#28568e"
android:text="확인"
android:textColor="#fff"
android:textSize="18dp" />
<Button
android:id="@+id/btn_cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:layout_weight="1"
android:background="#28568e"
android:text="취소"
android:textColor="#fff"
android:textSize="18dp" />
</LinearLayout>
</LinearLayout>
커스텀 다이얼로그를 만드셨다면 메인액티비에서 버튼을 만들어보록 하겠습니다.
메인 레이아웃 XML 코드입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_gravity="center"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_popup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="이름 입력 팝업"
android:gravity="center"
android:padding="25dp"
android:layout_gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout>
다이얼로그 클래스 생성
public class CustomDialog extends Dialog implements View.OnClickListener {
Context mContext;
EditText m_et_Name;
public CustomDialog(@NonNull Context context) {
super(context);
mContext = context;
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
setContentView(R.layout.popup);
init();
}
private void init() {
m_et_Name = findViewById(R.id.et_name);
findViewById(R.id.btn_ok).setOnClickListener(this);
findViewById(R.id.btn_cancel).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_ok:
break;
case R.id.btn_cancel:
dismiss();
break;
}
}
}
다이얼로그 띄우는 코드
CustomDialog dialog = new CustomDialog(MainActivity.this);
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.copyFrom(dialog.getWindow().getAttributes());
params.width = (int) (getApplicationContext().getResources().getDisplayMetrics().widthPixels * 0.7f);
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
dialog.show();
메인액티비티 전체 소스
package com.example.ncj.callback;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_popup).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CustomDialog dialog = new CustomDialog(MainActivity.this);
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.copyFrom(dialog.getWindow().getAttributes());
params.width = (int) (getApplicationContext().getResources().getDisplayMetrics().widthPixels * 0.7f);
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
dialog.show();
}
});
}
}
실행결과
728x90
반응형
LIST
'dev > android' 카테고리의 다른 글
안드로이드 공유하기 (0) | 2018.12.20 |
---|---|
안드로이드 수행시간 체크 (0) | 2018.12.19 |
안드로이드 콜백 만들기 (0) | 2018.12.18 |
안드로이드 커스텀 리스트뷰 구현 (0) | 2018.12.07 |
Android 이미지로딩 Glide 라이브러리 (0) | 2018.11.20 |