android 设置边框宽度,关于Android对话框宽度无法铺满全屏的问题

之前做自定义对话框需要宽度铺满全屏时,基本是这样操作的.AlertDialog dialog = new AlertDialog.Builder(context).create();

dialog.show();

Window window = dialog.getWindow();

WindowManager.LayoutParams lp = window.getAttributes();

lp.width = WindowManager.LayoutParams.MATCH_PARENT;

window.setAttributes(lp);

window.setWindowAnimations(R.style.dialogWindowAnim);//动画

window.setContentView(R.layout.layout_mine_bank_del);//布局

window.setGravity(Gravity.CENTER);

以前一直没出过问题,一直到这次使用了"AppTheme.NoActionBar"

主题,在5.0以上手机发现宽度无法铺满了;如果将位置设置底部window.setGravity(Gravity.BOTTOM);

会出现底部也有一段距离.

很郁闷,试了其他方式:window.getDecorView().setPadding(0, 0, 0, 0);

或者window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

或者Window window = getWindow();

WindowManager.LayoutParams wlp = window.getAttributes();

Display d = window.getWindowManager().getDefaultDisplay();//获取屏幕宽

wlp.width = (int) (d.getWidth());//宽度按屏幕大小的百分比设置 ;d.getWidth()这个方法已废弃

wlp.gravity = Gravity.CENTER;

window.setAttributes(wlp);

但是都一直无法成功.直到今天无意中在一个博客看到这句才解决问题window.setBackgroundDrawableResource(android.R.color.transparent);

把这句加上去就没问题了,哈哈!

顺便记一下,刚才那样自定义对话框需要先dialog.show();

才行,不然会出错的.另一种通过继承去自定义的则是最后面才showpublic class MyDialog extends AlertDialog{

public MyDialog(Context context) {

super(context);

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

this.setContentView(R.layout.my_dialog);

}

}

这种使用也比较简单,灵活度也好final MyDialog myDialog = new MyDialog(context);

myDialog.setMsg("测试显示自定义对话框");

myDialog.setOnPositiveListener("知道了",new View.OnClickListener() {

@Override

public void onClick(View v) {

myDialog.cancel();

}

});

myDialog.show();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值