1

我正在制作一个自定义对话框,其中设置了样式中的透明窗口背景。我的活动中有另一个按钮在对话框集后面,它与背景具有相同的 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>

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

按钮设置为 png 文件 从选择器设置按钮

4

1 回答 1

4

我不明白到底出了什么问题,但也许值得根据现有的半透明主题定义您的 CustomDialogTheme ?例如

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

您也可能需要设置一些额外的样式项目,例如(取自这个问题):

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

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

于 2011-10-30T04:16:24.677 回答