繁体   English   中英

如何在Android中创建完全自定义的Dialogue / Popup(更改叠加颜色和对话窗口布局)

[英]How to create a completely custom Dialogue/Popup in Android (change overlay colour and dialogue window layout)

我想完全重新设置Android中的默认对话框组件。 具体来说我想这样做:

  • 将半透明叠加背景从默认黑色更改为半透明白色。

  • 通过删除默认的窗口框架边框来更改“对话”窗口,并将其替换为XML中定义的布局(它只是带有浮动按钮的无边框图形。没有实际框架。)

我已经看过有关在对话框中创建自定义布局的教程(例如http://www.helloandroid.com/tutorials/how-display-custom-dialog-your-android-application ),但我还没有看到任何内容关于改变叠加的颜色和/或完全定制弹出的对话窗口并将其更多地转换为没有“窗口”的叠加。

我已经解决了这个问题,并使用以下步骤创建了我自己的自定义弹出式叠加层,其中包含自定义彩色半透明叠加背景:

1 - 在res / values /文件夹中创建一个新的xml文件,并将其命名为styles.xml

2 - 您可以在此处定义对话框属性。 这是我的样子。 如果要替换屏幕上显示的默认半透明黑色叠加层,则必须将windowIsFloating设置为false,并将布局背景修改为您想要的任何颜色。 以下是我用过的文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">
        <item name="android:windowBackground">@color/transparent_white</item>
        <item name="android:windowIsFloating">false</item>
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

3 - 返回java代码,在创建对话框对象时,使用传递上下文和主题的构造函数。 例如。 myDialog = new Dialog(this, R.style.CustomDialogTheme); (CustomDialogTheme是我在步骤2中的styles.xml中指定的name属性)

4 - 只需将对话框对象内容视图设置为您希望对话框看起来的任何布局。 例如。 myDialog.setContentView(R.layout.my_custom_overlay); 如果您希望对话框出现在屏幕的中心,请将其根元素的android:layout_gravitycenter

这对我很有用,但是缺少关闭对话框的方法。 如果您的自定义布局中有一个按钮来关闭它,下面是如何添加侦听器并关闭对话框窗口。

final Dialog d = new Dialog(this,R.style.CustomDialogTheme);
d.setContentView(R.layout.custom_dialog);
d.show();

Button close_btn = (Button) d.findViewById(R.id.close_btn);
close_btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        d.dismiss();
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM