Android Dialog如何显示在空间的下面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Dialog如何显示在空间的下面相关的知识,希望对你有一定的参考价值。
在android开发中,Dialog执行动画显示在某个空间的下面,如何实现?如下图所示:
附上部分代码(显示在指定控件下面尚未实现):
View view = LayoutInflater.from(context).inflate(R.layout.top_bar_popwin_layout, null);
Dialog dialog = new Dialog(context, R.style.transparentFrameWindowStyle);
dialog.setContentView(view, new RelativeLayout.LayoutParams(context.getWindowManager().getDefaultDisplay()
.getWidth(), RelativeLayout.LayoutParams.WRAP_CONTENT));
Window window = dialog.getWindow();
window.setWindowAnimations(R.style.main_menu_animstyle);
WindowManager.LayoutParams wl = window.getAttributes();
wl.x = 0;
wl.y = window.getWindowManager().getDefaultDisplay().getHeight();
// 设置显示位置
dialog.onWindowAttributesChanged(wl);
// 设置点击外围解散
dialog.setCanceledOnTouchOutside(true);
dialog.show();
// menuDialog.setOnDismissListener(listener);
Display display = context.getWindowManager()
.getDefaultDisplay();
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.width = (int) (display.getWidth()); // 设置宽度
dialog.getWindow().setAttributes(lp);
Android中Alertdialog是没有直接显示在指定控件下的API的,你可以使用PopupWindow来实现显示在指定控件下面的需求。PopupWindow不仅能显示在指定位置,还可以指定显示和消失的动画,不必限定死必须用哪个控件,只需要实现需求即可。
PopupWindow 是一个可以显示在当前 Activity 之上的浮动容器,PopupWindow 弹出的位置是能够改变的,按照有无偏移量,可以分为无偏移和有偏移两种;按照参照对象的不同又可以分为两种:相对某个控件(Anchor 锚点)的位置和在父容器内部的相对位置。
LayoutInflater mLayoutInflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);View contentView = mLayoutInflater.inflate(R.layout.pop, null)
// R.layout.pop为PopupWindow 的布局文件
PopupWindow pop = new PopupWindow(contentView, LayoutParams.FILL_PARENT, LayoutP arams.WRAP_CONTENT);
pop.setBackgroundDrawable(new BitmapDrawable());
// 指定 PopupWindow 的背景
pop.setFocusable(true);
//指定PopupWindow显示在你指定的view下
pop.showAsDropDown(your_view); 参考技术A dialogfragment你用过么?你这个问题,可以用dialogfragment试试,fragment的动画你会加吧 参考技术B popwindow可实现追问
popwin我会,现在想使用dialog来实现。怎么实现呀?
以上是关于Android Dialog如何显示在空间的下面的主要内容,如果未能解决你的问题,请参考以下文章