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如何显示在空间的下面的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android中判断软键盘是不是弹出或隐藏

android Dialog如何实现点击某一处,Dialog就显示地那个地方?

android中service显示dialog

android怎样自定义dialog

android 中如何让dialog在一个指定控件下方显示

彻底搞定Android开发中软键盘的常见问题