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
일상과 개발을 공유하고 소통하는 블로그입니다.
    반응형
  • NCJ
    NCJ 프로그래밍
    NCJ
  • 전체
    오늘
    어제
    • ALL
      • dev
        • android
        • java
        • Spring Boot
        • node.js
        • MFC
        • react-native
        • web
        • 기타
        • vue
        • react
      • 일상
        • news
        • 요리
        • 영화
        • 드라마
        • 제품
        • 게임
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바