Android中的对话框和弹出窗口

Android中的对话框和弹出窗口,android,popup,popupwindow,dialogfragment,Android,Popup,Popupwindow,Dialogfragment,中的Android设计文档明确区分了对话框、警报、弹出窗口和祝酒词。它还建议通过DialogFragment类实现对话框,并通过Toast类实现Toast。但是,我不清楚是否应该使用PopupWindow或DialogFragment实现Popups 我知道,DialogFragments通常带有Ok/Cancel按钮,并且可以定义PopupWindows的位置,但是: 这些细微的差别是使用其中一个或另一个的唯一理由吗 DialogFragment是将在某个时候被弃用的PopupWindow的

中的Android设计文档明确区分了对话框、警报、弹出窗口和祝酒词。它还建议通过
DialogFragment
类实现对话框,并通过
Toast
类实现Toast。但是,我不清楚是否应该使用
PopupWindow
DialogFragment
实现Popups

我知道,
DialogFragments
通常带有Ok/Cancel按钮,并且可以定义
PopupWindows
的位置,但是:

  • 这些细微的差别是使用其中一个或另一个的唯一理由吗
  • DialogFragment
    是将在某个时候被弃用的
    PopupWindow
    的继承者吗
  • 根据中的答案,PopupWindow“仅限于几个模板”,但我在类文档中找不到任何关于有限数量模板的参考
  • 那么,最后,您将如何实现这样的弹出窗口?为什么?

如果您想要如链接中所示的对话框,只需制作如下所述的自定义对话框即可:

创建对话框对象:

Dialog dialog = new Dialog(context,android.R.style.Theme_Translucent_NoTitleBar);
将自定义视图设置为此对话框:

show_dialog(){
    dialog.setContentView(R.layout.custom_dialog);//your custom dialog layout.
}
您的自定义布局应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:id="@+id/custom_dialog_first_rl"
    android:background="@android:color/black">
<!-- write code for rest of your UI here -->
</RelativeLayout>
show_dialog(){
    dialog.setContentView(R.layout.custom_dialog);//your custom dialog layout.
    RelativeLayout custom_dialog_first_rl=(RelativeLayout)dialog.findViewById(R.id.custom_dialog_first_rl);
        custom_dialog_first_rl.getBackground().setAlpha(170);
}
调用
show_dialog()
在您想显示此对话框的地方

好的,根据,他们建议使用
DialogFragment
,即使对于没有按钮的窗口也是如此。此外,我想基于
片段
的事实简化了它添加到后台的过程,而我不清楚如何使用
弹出窗口
。因此,我选择了
DialogFragment
方法,尽管我仍然希望能够获得关于这两个类比较的更深入的细节。