带有透明窗口的Android自定义对话框背景会破坏我的按钮选择器

时间:2011-10-29 19:56:16

标签: android button dialog transparent customdialog

我正在制作一个自定义对话框,其中样式中设置了透明窗口背景。我在对话框后面的活动中有另一个按钮,使用相同的button_selector作为背景,它工作正常,所以我知道问题是样式,更具体地说是windowBackground属性。

有谁知道我如何为自定义对话框获取透明窗口背景但仍允许我的按钮选择器正常工作?

包含按钮背景设置为@ drawable / lightblue1和@ drawable / button_selector的图片。

这是我的风格xml

<resources>
   <style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">
     <item name="android:windowBackground">@color/transparent</item>
     <item name="android:windowIsFloating">false</item>
     <item name="android:windowNoTitle">true</item>
  </style>
</resources>

如果我删除<item name="android:windowBackground">@color/transparent</item>行,那么我的按钮选择器可以正常工作,但我的对话框放在系统默认对话框容器背景中。

这是我的按钮声明xml。如果我将@ drawable / button_selector更改为其中一个实际的png文件,那么它会正确显示,但是使用选择器我的按钮背景将设置为透明。

  <Button
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:background="@drawable/button_selector"
  android:layout_marginBottom="15dp"
  android:textSize="35sp"
  android:text="@string/btnText1">
  </Button>

以下是我如何从java创建对话框:

 Dialog dialog = new Dialog(TimeClock.this, R.style.CustomDialogTheme);
 dialog.setContentView(R.layout.tag);
 dialog.show();

这是button_selector.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:drawable="@drawable/darkblue1" /> <!-- pressed -->
     <item android:state_focused="true"
           android:drawable="@drawable/darkblue1" /> <!-- focused -->
     <item android:drawable="@drawable/lightblue1" /> <!-- default -->
 </selector>

编辑:我最后用一个半透明的活动“假装”我的对话框,以便我可以更好地控制它的外观。

with button set to the the png file with button set from the selector

1 个答案:

答案 0 :(得分:4)

我不明白到底出了什么问题,但也许根据现有的半透明主题来定义你的CustomDialogTheme是值得的? e.g。

<resources>
   <style name="CustomDialogTheme" parent="@android:style/Theme.Translucent.NoTitleBar">

您可能还需要设置一些额外的样式项目(取自this question):

<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>

我想知道Android是否使用其中一种设置来让按钮选择器工作?