Android中Dialog位置+样式的设置

举报
计蒙不吃鱼 发表于 2025/06/04 15:23:32 2025/06/04
【摘要】 本文介绍了在Android开发中如何设置Dialog的位置和样式。通过自定义`MyDialog`类,可以灵活调整Dialog的显示位置,例如将其固定在屏幕底部,并设置宽度匹配父布局。同时,文章还展示了如何模仿Android原生Dialog样式,通过定义`MyDialogStyle`去除标题栏、设置背景透明度、添加阴影效果以及配置点击外部关闭等功能,从而实现更加美观和符合需求的Dialog效果。

Android中Dialog位置的设置

效果图如下:

Dialog实现如下:

在Activity的点击事件中调用:

MyDialog.java:

public class MyDialog extends Dialog {
    public MyDialog(@NonNull Context context) {
        super(context);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //打气
        setContentView(R.layout.mydialog);
        //窗口
        Window window = getWindow();
        //拿到窗口参数对象
        WindowManager.LayoutParams attributes = window.getAttributes();
        //通过attributes设置参数,----->以设置dialog出现在底部为例
        attributes.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
        attributes.width = WindowManager.LayoutParams.MATCH_PARENT;
        //将属性重新设置给窗口,使用更新属性来生效
        window.setAttributes(attributes);

    }
}

Android中Dialog样式的设置

模仿Android原生定义Dialog样式:(去除标题)

首先看一下Android原生是怎么定义其样式的

然后我们模仿其实现:

最后在自己定义的Dialog中调用:

样式代码如下:

 <!--自定义Dialog样式-->
    <style name="MyDialogStyle" parent="android:Theme.Dialog">
    <item name="android:windowBackground">@android:color/white</item>
    <!--边框-->
    <item name="android:windowFrame">@null</item>
    <!--是否覆盖窗口显示内容-->
    <item name="android:windowContentOverlay">@null</item>
    <!--动画样式-->
    <item name="android:windowAnimationStyle">@null</item>
    <!--是否设置阴影-->
    <item name="android:backgroundDimEnabled">true</item>
    <!--是否设置半透明的效果-->
    <item name="android:windowIsTranslucent">true</item>
    <!--是否除去标题栏-->
    <item name="android:windowNoTitle">true</item>
    <!--是否点击外部空白处消失-->
    <item name="android:windowCloseOnTouchOutside">true</item>
    </style>
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。