自定义对话框背景表现非常奇怪

3

我正在为Android创建一个小游戏。目前,我只是在创建菜单屏幕的用户界面。

由于我正在使用木制主题,我还想使用自定义对话框来显示高分等内容,以便它符合主题。

我找到了一些很好的指南,但是我遇到了一个非常奇怪的问题,即对话框的背景几乎透明。

我已经完成的工作: - 创建了一个dialog_theme.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Dialog" parent="android:Theme">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:backgroundDimEnabled">false</item>
  </style>
</resources>
  • 创建了custom_dialog.xml,其中包含所需的元素(标题和内容的TextView以及关闭按钮)
  • 创建了一个扩展Dialog的CustomDialog类,让我可以轻松构建这些自定义对话框,并设置所需的内容和标题
  • 在活动中使用CustomDialog来创建对话框

(我在这篇博客blog.androgames.net/10/custom-android-dialog/中找到了主要的指南)

问题在于透明背景并不总是透明的(显示背景中的活动ui)。这个菜单中有4个自定义按钮。问题在于,与其仅显示透明对话框并在背景中显示整个ui,其中一个按钮的图像被拉伸并填充整个对话框背景。如果我只为这个按钮使用标准背景,则对话框背景是透明的,并按照应该的方式显示背景中的活动ui。

由于我可能没有解释清楚,我将展示我所说的图片: - 导致问题的按钮代码:

<Button
        android:id="@+id/id_about_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/id_achievements_button"
        android:layout_marginTop="15dp"
        android:background="@drawable/selector_about" />

这将得到以下结果:(抱歉,我现在无法直接在帖子中使用图片)http://dl.dropbox.com/u/2980431/wrong.png

将按钮代码修改为:

<Button
        android:id="@+id/id_about_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/id_achievements_button"
        android:layout_marginTop="15dp"/>

会得到以下结果: http://dl.dropbox.com/u/2980431/correct.png

希望有人能想出为什么会发生这种情况,并提供解决方法 - 老实说我完全迷失了。


按钮背景的文件大小都一样吗?如果您使用android:layout_width="wrap_content",它们将会被拉伸到其完整大小。 - silleknarf
是的,所有的背景文件大小都完全相同。我有其他3个按钮,它们具有类似的选择器来定义它们的背景,这些都没有任何问题。按钮本身在使用背景时正常工作。 - Knirkegaard
1个回答

0

仍然不确定发生了什么。在另一个项目中,我遇到了同样的问题 - 自定义半透明对话框背景,添加了另一个可绘制对象到背景中。重命名显示在背景中的错误可绘制对象,然后清理项目就解决了这个问题。

奇怪。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接