Android中Dialog位置+样式的设置
【摘要】 本文介绍了在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)