在日常开发中,总是会遇到各种Dialog的使用,调整根据UI设计的不同,会经常调整Dialog在屏幕中的位置,这篇文章主要介绍,在使用 DialogFragment 时设置Margin的几种方式。
如下是最后实现的效果:
设置两边margin效果:
设置顶部margin效果:
全屏的Dialog设置顶部Margin:
这个比较容易,主要就是设置一个高度wrap_content,宽度match_parent的dialog,然后在dialog的布局中设置margin就可以了。
如下是xml文件:
然后在DialogFragment的onResume里对Window做一些处理:
这种情况margin可以通过 WindowManager.LayoutParams 的 verticalMargin 属性来实现。 verticalMargin 和xml里面设置的layout_margin不一样, verticalMargin 是通过设置一个0-1的float变量,来标识margin在屏幕中的占比。
如下是在DialogFragment的onResume中的处理:
xml文件(和1的类似,没有什么特别):
这里如果使用2中的方法,没有任何效果。这里使用另外一种方式实现-- insetDrawable 。
这里的实现是在xml里面写一个 <inset>:
在DialogFragment的onResume方法中:
AndroidDialog示例代码:1.创建象框
AlertDialog.Builder builder = new Builder(context)
builder.setTitle("请输入")//设置框标题
builder.setIcon(android.R.drawable.btn_star)//设置框标题前图标
2.创建EditText输入框
final EditText edit = new EditText(context)
3.输入框赋值给Dialog,并增加确定取消按键
builder.setView(edit)
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "输入: " + edit.getText().toString(), Toast.LENGTH_SHORT).show()
}
})
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "点取消", Toast.LENGTH_SHORT).show()
}
})
4.设置用api并showd
builder.setCancelable(true)//设置按钮否按返键取消,false则取消
AlertDialog dialog = builder.create()//创建框
dialog.setCanceledOnTouchOutside(true)//设置d框失焦点否隐藏,即点击屏蔽其否隐藏
dialog.show()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)