我正在制作一个自定义对话框,其中设置了样式中的透明窗口背景。我的活动中有另一个按钮在对话框集后面,它与背景具有相同的 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>
编辑:我最终用一个半透明的活动“伪造”了我的对话框,以便我可以更好地控制它的外观。