我想要彻底重新皮肤的默认对话组件在Android。具体来说,我想这样做:
我已经看过关于在对话框中创建自定义布局的教程(例如http://www.helloandroid.com/tutorials/how-display-custom-dialog-your-android-application),但我还没有看到任何关于更改覆盖层颜色和/或完全定制对话框窗口的内容,该窗口弹出并将其更多地转化为没有“窗口”的覆盖。
发布于 2010-09-17 06:10:42
我解决了这个问题,并使用以下步骤创建了具有自定义颜色半透明覆盖背景的自定义弹出式覆盖:
1-在res/value/文件夹中创建一个新的xml文件,并将其命名为styles.xml
这里是定义对话框属性的地方。这就是我的样子。如果您想要替换默认的半透明黑色覆盖,显示在屏幕上,您必须设置windowIsFloating
为假,并修改您的布局背景是任何颜色您想要。下面是我使用过的文件:
<?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>
在java代码中,在创建对话框对象时,使用传递上下文和主题的构造函数。例如:myDialog = new Dialog(this, R.style.CustomDialogTheme);
(CustomDialogTheme是步骤2中在styles.xml中指定的名称属性)
4-只需将您的对话框对象内容视图设置为任何您希望您的对话框看起来的布局。例如:myDialog.setContentView(R.layout.my_custom_overlay);
如果您希望对话框出现在屏幕中心,请将其根元素的android:layout_gravity
设置为center
发布于 2011-01-09 16:26:18
这对我来说很好,但是缺少如何关闭对话框。如果您的自定义布局中有一个按钮来关闭它,下面是如何添加侦听器和关闭对话框窗口。
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();
}
});
https://stackoverflow.com/questions/3728990
复制