android自定义布局弹窗,Android ---------- 弹出层自定义布局 之 AlertDialog

1.Android 最简单实用的弹出层控件  AlertDialog (注: 设置 AlertDialog 的任何属性要在dialog.show() 之后进行)

(1)效果图

4631a1b00765ec4ed890d2a8bdee6635.png

(2)控制器代码

AlertDialog dialog=newAlertDialog.Builder(context)

.setTitle("提示")

.setMessage("/**/")

.setNegativeButton("close", newDialogInterface.OnClickListener() {

@Overridepublic void onClick(DialogInterface dialog, intwhich) {//do nothing - it will close on its own

}

})

.setPositiveButton("go", newDialogInterface.OnClickListener() {

@Overridepublic void onClick(DialogInterface dialog, intwhich) {//}

})

.show();//在dialog执行show之后才能来设置

TextView tvMsg =(TextView) dialog.findViewById(android.R.id.message);

tvMsg.setTextSize(20);

tvMsg.setTextColor(Color.parseColor("#FF0000"));

dialog.getButton(dialog.BUTTON_NEGATIVE).setTextSize(16);

dialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(Color.parseColor("#8C8C8C"));

dialog.getButton(dialog.BUTTON_POSITIVE).setTextSize(16);

dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(Color.parseColor("#1DA6DD"));

2.(1)效果图

76b69a84e8faa63d58be7de927b370b8.png

(2) 解读:混合布局,代码设置一部分,自定义布局一部分;

(3)控制器代码:

AlertDialog.Builder builder = newAlertDialog.Builder(context);

View view= View.inflate(context, R.layout.activity_dialog_view, null); // 账号、密码的布局文件,自定义builder.setIcon(R.mipmap.ic_launcher);//设置对话框icon//初始化字符串数组

final String[] strArray = new String[]{"床前明月光","意识地上霜"};

builder.setTitle("简单列表");//设置列表//builder.setItems(strArray, new DialogInterface.OnClickListener() {//

//@Override//public void onClick(DialogInterface dialog, int which) {//Toast.makeText(context,strArray[which],Toast.LENGTH_SHORT).show();//}//});

//设置单选

builder.setSingleChoiceItems(strArray, 0, newDialogInterface.OnClickListener() {

@Overridepublic void onClick(DialogInterface dialog, intwhich) {

}

});

//设置多选//builder.setMultiChoiceItems(strArray, new boolean[]{false, false, false, false}, new DialogInterface.OnMultiChoiceClickListener() {//@Override//public void onClick(DialogInterface dialog, int which, boolean isChecked) {//

//}//});

AlertDialog dialog=builder.create();

dialog.setView(view);

dialog.setButton(DialogInterface.BUTTON_POSITIVE,"确定", newDialogInterface.OnClickListener() {

@Overridepublic void onClick(DialogInterface dialog, intwhich) {

dialog.dismiss();//关闭对话框

}

});

dialog.setButton(DialogInterface.BUTTON_NEUTRAL,"点我试试", newDialogInterface.OnClickListener() {

@Overridepublic void onClick(DialogInterface dialog, intwhich) { }

});

dialog.show();

Window dialogWindow= dialog.getWindow();//获取window对象

dialogWindow.setGravity(Gravity.TOP);//设置对话框位置

dialogWindow.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);//设置横向全屏

dialogWindow.setWindowAnimations(R.style.share_animation);//设置动画 见(4)资源文件

(4)资源文件

style文件

@anim/dialog_enter //进入时的动画

@anim/dialog_exit //退出时的动画

e2be58946adc6218ca00dd98c42b48f3.png

android:fromYDelta="-100%p" android:duration="600"

/>

android:fromYDelta="-100%p"android:duration="600"

/>

3.(1)效果图

3fdb041fdc30a6dcece8f963e795b95f.png

(2)控制器代码

只需在上述控制器代码中加上以下代码块

WindowManager.LayoutParams params =dialog.getWindow().getAttributes();

params.x= 0; //新位置X坐标

params.y = 0; //新位置Y坐标//params.width = 300;//宽度

params.height = 200; //高度

params.alpha = 0.7f; //透明度

dialog.getWindow().setAttributes(params);

解决添加动画时可能出现的问题:https://stackoverflow.com/questions/45952607/error-style-attribute-androidattr-windowexitanimation-not-found#

注意:是先显示出来dialog,show()出来,才能再设置宽高属性

去除边框

AlertDialog.setView(view,0,0,0,0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值