[英]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_gravity
为center
这对我很有用,但是缺少关闭对话框的方法。 如果您的自定义布局中有一个按钮来关闭它,下面是如何添加侦听器并关闭对话框窗口。
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.