首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从底部打开对话框,但在android中它将仅显示在从底部开始的半个屏幕之间

在Android中,可以通过使用DialogFragment来实现从底部打开对话框,并且只显示在从底部开始的半个屏幕之间。

DialogFragment是Android提供的一种特殊的Fragment,用于显示对话框式的界面。下面是实现该功能的步骤:

  1. 创建一个继承自DialogFragment的类,例如BottomDialogFragment。
  2. 在BottomDialogFragment类中,重写onCreateDialog方法,创建一个AlertDialog,并设置其样式为R.style.BottomDialog。
  3. 在onCreate方法中,设置BottomDialogFragment的样式为STYLE_NO_FRAME,以去除默认的标题栏。
  4. 在onActivityCreated方法中,获取Dialog对象,并设置其窗口属性,使其显示在底部,并且只占据屏幕的一半高度。
  5. 在需要显示对话框的地方,通过FragmentManager调用show方法显示BottomDialogFragment。

下面是一个示例代码:

代码语言:java
复制
public class BottomDialogFragment extends DialogFragment {

    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        // 设置对话框内容
        builder.setMessage("这是一个底部对话框");
        // 设置对话框按钮
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 点击确定按钮的逻辑处理
            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 点击取消按钮的逻辑处理
            }
        });
        return builder.create();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NO_FRAME, R.style.BottomDialog);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Dialog dialog = getDialog();
        if (dialog != null) {
            Window window = dialog.getWindow();
            if (window != null) {
                // 设置对话框显示在底部
                window.setGravity(Gravity.BOTTOM);
                // 设置对话框高度为屏幕的一半
                WindowManager.LayoutParams params = window.getAttributes();
                params.height = WindowManager.LayoutParams.WRAP_CONTENT;
                params.width = WindowManager.LayoutParams.MATCH_PARENT;
                window.setAttributes(params);
            }
        }
    }
}

在使用时,可以通过以下代码显示底部对话框:

代码语言:java
复制
BottomDialogFragment dialogFragment = new BottomDialogFragment();
dialogFragment.show(getSupportFragmentManager(), "bottom_dialog");

这样就可以实现从底部打开对话框,并且只显示在从底部开始的半个屏幕之间。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《Android Studio开发实战 从零基础到App上线》第一版的资源下载和内容勘误

下面是《Android Studio开发实战 从零基础到App上线》(第一版)一书用到的工具和代码资源: 1、本书使用的Android Studio版本为2.2.3,因为Android官网现在不提供该版本的下载,所以博主把该版本的64位安装包上传到了百度网盘,点击https://pan.baidu.com/s/1o80opRG进入下载页面。 如需32位的Android Studio安装包,可前往Android官网页面下载。 2、本书使用的Android NDK版本为r13b,64位NDK安装包的下载页面为https://pan.baidu.com/s/1qXZLMsG 如需32位的NDK安装包,可前往Android官网页面下载。 3、本书提供所有示例源码的demo工程下载,旧版源码(适配Android Studio 2.2)的下载页面为https://pan.baidu.com/s/1c1LXlKG,新版源码(适配Android Studio 3.2)的下载页面为https://pan.baidu.com/s/14NE2DD-frXxuDXUAlTfRaw,最新的源码可访问我的github获取,github地址是https://github.com/aqi00/android2。 4、本书提供配套的ppt课件下载,课件的下载页面为https://pan.baidu.com/s/1kMcHvS4X8u5qdrBD6eUVIg。 源码与各章的对应关系表见下图:

02

Android开发笔记(二十三)文件对话框FileDialog

对话框是人机交互的有力工具,Android自带了几个常用的对话框,包括AlertDialog提示对话框、ProgressDialog进度对话框、DatePickerDialog日期选择对话框、TimePickerDialog时间选择对话框等等。其中最常用的是AlertDialog,而且需要自定义对话框的时候,多半也是在AlertDialog.Builder基础上集成其他的控件,具体参见《Android开发笔记(六十六)自定义对话框》。ProgressDialog也比较常用,在系统加载信息或者等待其他事情时,都可能需要显示ProgressDialog。相比之下,DatePickerDialog和TimePickerDialog用的不多,因为这两个对话框上的文字依赖于系统的语言设置,如果系统默认语言是英文,DatePickerDialog和TimePickerDialog上的文字也是英文,而且还无法设置为中文;另一个原因是这两个对话框的布局和风格无法自定义,如果想加上别的提示信息,就得自己重写代码了。接下来我们就使用AlertDialog来重写日期和时间对话框。 首先要提供日期对话框和时间对话框的布局文件,例如R.layout.dialog_format_date和R.layout.dialog_format_time,布局文件中需分别集成DatePicker和TimePicker控件。 然后分别初始化DatePicker和TimePicker对象,分别设置当前日期与当前时间。 接着创建一个AlertDialog.Builder对象,在该Builder对象中嵌入布局视图,并设置标题、确定按钮、取消按钮。 最后还要提供一个回调接口,用于主页面上处理日期和时间的选择事件,同时在确定按钮的点击事件中要触发该回调接口的方法。 下面是重写后的日期和时间对话框的代码

03
领券