对话框自定义:相对布局的java代码实现
创建AlertDiaglog
Window window = dlg.getWindow()
创建布局,代码为相对布局
载入布局,载入相关空间,设置相关控件的位置
代码如下
int bgImageViewID = 10;
int iconImageViewID = 11;
int textViewID = 12;
int buttonOkID = 13;
int buttonCancelID = 14;
int srcImageViewId = 15;
final AlertDialog dlg = new AlertDialog.Builder(this).create();
dlg.show();
Window window = dlg.getWindow();
// 主要就是在这里实现这种效果的.
RelativeLayout rLayout = new RelativeLayout(this);
//设置背景
ImageView bg_iv = new ImageView(this);
bg_iv.setId(bgImageViewID);
bg_iv.setImageResource(R.drawable.bg2);
RelativeLayout.LayoutParams bgRelativeParams_iv = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
bgRelativeParams_iv.addRule(RelativeLayout.CENTER_HORIZONTAL);
rLayout.addView(bg_iv, bgRelativeParams_iv);
ImageView icon_iv = new ImageView(this);
icon_iv.setId(iconImageViewID);
icon_iv.setImageResource(R.drawable.egame_logo_icon);
RelativeLayout.LayoutParams iconRelativeParams_iv = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
iconRelativeParams_iv.addRule(RelativeLayout.ALIGN_LEFT,bgImageViewID);
iconRelativeParams_iv.addRule(RelativeLayout.ALIGN_TOP,bgImageViewID);
rLayout.addView(icon_iv, iconRelativeParams_iv);
TextView tv = new TextView(this);
tv.setId(textViewID);
tv.setText("XXXXXXXXX");
RelativeLayout.LayoutParams RelativeParams_tv = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
RelativeParams_tv.addRule(RelativeLayout.CENTER_HORIZONTAL,iconImageViewID);
rLayout.addView(tv, RelativeParams_tv);
ImageView src_iv = new ImageView(this);
src_iv.setId(srcImageViewId);
src_iv.setBackgroundResource(R.drawable.app_icon);
RelativeLayout.LayoutParams srcRelativeParams_iv = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
srcRelativeParams_iv.addRule(RelativeLayout.CENTER_IN_PARENT,bgImageViewID);
//RelativeParams_tv.addRule(RelativeLayout.ALIGN_TOP,bgImageViewID);
rLayout.addView(src_iv, srcRelativeParams_iv);
Button btn_ok = new Button(this);
btn_ok.setId(buttonOkID);
btn_ok.setBackgroundResource(R.drawable.submit);
RelativeLayout.LayoutParams relativeParams_btn_ok = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)iv.getLayoutParams();
relativeParams_btn_ok.addRule(RelativeLayout.ALIGN_BOTTOM,bgImageViewID);
relativeParams_btn_ok.addRule(RelativeLayout.ALIGN_LEFT,bgImageViewID);
rLayout.addView(btn_ok, relativeParams_btn_ok);
Button btn_cancel = new Button(this);
btn_cancel.setId(buttonCancelID);
btn_cancel.setBackgroundResource(R.drawable.cancel);
RelativeLayout.LayoutParams relativeParams_btn_cancel = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
relativeParams_btn_cancel.addRule(RelativeLayout.ALIGN_BOTTOM,bgImageViewID);
relativeParams_btn_cancel.addRule(RelativeLayout.ALIGN_RIGHT,bgImageViewID);;
rLayout.addView(btn_cancel, relativeParams_btn_cancel);
//window.setContentView(R.layout.diag);
window.setContentView(rLayout);
// 为确认按钮添加事件,执行退出应用操作
btn_ok.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
}
});
// 关闭alert对话框架
btn_cancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dlg.cancel();
}
});