将Activity设计成圆角对话框模式

背景:

现有的AlertDialog之类的现有对话框类必须得依赖上下文环境创建,生命周期也受其控制。那么没有可以依赖的上下文环境弹框怎么实现,如跨应用弹框,暗码弹框等。

思路:

需要依赖Activity,将Activity直接设计成对话框样式。

步骤:

1. 定义对话框样式style:

2.在AndroidManifest.xml中设置activity的theme为自定义style.

3. 创建圆角形状的shape

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="#ffffff" />

    <corners android:radius="12dp" />

</shape>

4. 将shape作为activity窗口的背景。

重点:

1. 如何设置对话框的大小。

方法一: 在oncreate函数中通过WindowManager和Window设置:

       Window win = this.getWindow();

        win.getDecorView().setPadding(0, 0, 0, 0);

        WindowManager.LayoutParams lp = win.getAttributes();

        lp.width = 600;

        lp.height = 400;

        lp.gravity = Gravity.CENTER;

        win.setAttributes(lp);

方法二:直接在layout文件中设置根布局的宽高:

    android:layout_width="300dp"

    android:layout_height="200dp"

2. 如何设置对话框圆角。

方法一:oncreate中设置window的背景资源:

win.getDecorView().setBackgroundResource(R.drawable.deviceinfo_dialog_shape);

方法二:style中设置windowbackground:

<item name="android:windowBackground">@drawable/deviceinfo_dialog_shape</item>。

3.其实强大的android框架提供了好多属性可以满足各种样式,Dialog的属性可以参考frameworks/base/core/res/res/values/themes.xml "Theme.Dialog"的属性集。关于window的有:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容