CustomDialog 뒷배경 날리기
흠...재밌는 기능이 있네.
항상 Custom Dialog를 만들다 보면 뒷배경이 맘에 걸렸다....그래서 찾아보던중 뒷배경을 날려버릴수(없애버리는) 있었다.
먼저 이건 기존 Dialog와는 살짝 개념이 다른다.
새로운 Activity를 생성해서 해당 Activity에 onApplyThemeResource라는 메소드를 재정의하고...테마 스타일을 적용시킨다.
직접 만들어봐야지. 설명만 봐선 모르지...^^
1단계 ] Activity 호출하기.
emailEdit.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) { if(emailEdit.getText().toString().equals("")){ Intent intent= new Intent(GuestBook_Write.this, email_dialog_activity.class); startActivity(intent); }
} });
EditText가 클릭 되었을때 Dialog가 뜰 수 있도록 Intent를 날렸다. |
2단계 ] email_dialog_activity.class 구현
public class email_dialog_activity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.email_dialog); }
/** * Callback for Theme Style setting */ protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) { super.onApplyThemeResource(theme, resid, first);
// no background panel is shown theme.applyStyle(style.Theme_Panel, true);
}
}
저기 theme.applyStyle(style.Theme_Panel, true); 를 통해서 테마를 적용시킨다. |
3단계] 팝업 Layout 디자인 하기. email_dialog.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="280dip" android:layout_height="320dip" android:orientation="vertical" android:gravity="center" android:background="#696969" android:padding="2dip"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center" android:padding="10dip" android:background="#FFFFFF"> <ImageView android:layout_width="30dip" android:layout_height="wrap_content" android:src="@drawable/mail_title_icon" android:layout_gravity="center|center_vertical" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" E-MAIL 계정 선택" android:textSize="20dip" android:textStyle="bold" android:textColor="#000000" android:layout_gravity="center|center_vertical" /> </LinearLayout> <ScrollView android:id="@+id/ScrollView01" android:layout_height="fill_parent" android:layout_width="fill_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:background="@drawable/email_dialog_background_normal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="다음 (@hanmail.net)" android:textSize="20dip" android:padding="10dip" android:textColor="#FFFFFF" /> <ImageView android:layout_width="30dip" android:layout_height="wrap_content" android:src="@drawable/email_dialog_arrow_right" android:layout_gravity="right|center_vertical" android:paddingRight="5dip" /> </FrameLayout> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:background="@drawable/email_dialog_background_normal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="구글 (@gmail.com)" android:textSize="20dip" android:padding="10dip" android:textColor="#FFFFFF" /> <ImageView android:layout_width="30dip" android:layout_height="wrap_content" android:src="@drawable/email_dialog_arrow_right" android:layout_gravity="right|center_vertical" android:paddingRight="5dip" /> </FrameLayout> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:background="@drawable/email_dialog_background_normal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="핫메일 (@hotmail.com)" android:textSize="20dip" android:padding="10dip" android:textColor="#FFFFFF" /> <ImageView android:layout_width="30dip" android:layout_height="wrap_content" android:src="@drawable/email_dialog_arrow_right" android:layout_gravity="right|center_vertical" android:paddingRight="5dip" /> </FrameLayout> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:background="@drawable/email_dialog_background_normal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="네이버 (@naver.com)" android:textSize="20dip" android:padding="10dip" android:textColor="#FFFFFF" /> <ImageView android:layout_width="30dip" android:layout_height="wrap_content" android:src="@drawable/email_dialog_arrow_right" android:layout_gravity="right|center_vertical" android:paddingRight="5dip" /> </FrameLayout> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:background="@drawable/email_dialog_background_normal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="네이트 (@nate.com)" android:textSize="20dip" android:padding="10dip" android:textColor="#FFFFFF" /> <ImageView android:layout_width="30dip" android:layout_height="wrap_content" android:src="@drawable/email_dialog_arrow_right" android:layout_gravity="right|center_vertical" android:paddingRight="5dip" /> </FrameLayout> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:background="@drawable/email_dialog_background_normal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="파란 (@paran.com)" android:textSize="20dip" android:padding="10dip" android:textColor="#FFFFFF" /> <ImageView android:layout_width="30dip" android:layout_height="wrap_content" android:src="@drawable/email_dialog_arrow_right" android:layout_gravity="right|center_vertical" android:paddingRight="5dip" /> </FrameLayout> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:background="@drawable/email_dialog_background_normal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="야후 (@yahoo.co.kr)" android:textSize="20dip" android:padding="10dip" android:textColor="#FFFFFF" /> <ImageView android:layout_width="30dip" android:layout_height="wrap_content" android:src="@drawable/email_dialog_arrow_right" android:layout_gravity="right|center_vertical" android:paddingRight="5dip" /> </FrameLayout> </LinearLayout> </ScrollView> </LinearLayout>
소스가 무지 길지만....결국 이 Layout이 팝업창으로 출력되는것이다. |
4단계] AndroidManifest.xml 에 Activity 선언하기.
<activity android:name=".email_dialog_activity" android:theme="@android:style/Theme.Dialog"> </activity>
|
요렇게 해주면!!!! 바로바로 Popup Dialog가 출력된다. 제법 깔끔하다~~~~
관련 포스트 (http://m.androidside.com/bbs/board.php?bo_table=B46&wr_id=13458)