android custom dialog 만들기

2018. 12. 18. 19:22·dev/android
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
'dev/android' 카테고리의 다른 글
  • 안드로이드 수행시간 체크
  • 안드로이드 콜백 만들기
  • 안드로이드 커스텀 리스트뷰 구현
  • Android 이미지로딩 Glide 라이브러리
NCJ
NCJ
일상과 개발을 공유하고 소통하는 블로그입니다.
    반응형
    250x250
  • NCJ
    NCJ 프로그래밍
    NCJ
  • 전체
    오늘
    어제
    • ALL
      • dev
        • android
        • java
        • Spring Boot
        • node.js
        • MFC
        • react-native
        • web
        • 기타
        • vue
        • react
      • 일상
        • news
        • 요리
        • 영화
        • 드라마
        • 제품
        • 게임
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    다이어트
    리니지w
    CSS
    던파 모바일 사전캐릭 생성
    Web
    게임
    리니지
    리니지w 이벤트 안내
    갤럭시 버즈2
    던파 서버 오픈
    던파 모바일 사전캐릭
    던파 모바일 서버오픈
    던파 사전캐릭
    window webserver
    안드로이드
    리니지w 오픈
    삼성
    갤럭시 워치 4
    리니지w 이벤트
    던파 캐릭생성
    갤럭시
    java
    리니지W 사전예약
    apache
    코딩문제
    php
    사전캐릭
    Android
    리니지w 보상
    던파 출시일
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
NCJ
android custom dialog 만들기
상단으로

티스토리툴바