透明对话框在某些设备中不起作用

rco*_*ini 2 user-interface android

我正在使用此代码来应用具有透明背景的颜色。

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(MyColor));
Run Code Online (Sandbox Code Playgroud)

它在手机上效果很好,但在平板电脑上无法正常工作

显示在我的方格上有白色和灰色背景(我使用自定义视图,背景设置为@null):

在此处输入图片说明

Car*_*los 6

根据您的帖子,我有一些问题可能会导致这些问题透明化。

1.-由于平板电脑显示的呈现效果不同,可能是OS API低于手机上的版本吗?如果是这种情况,请尝试使用与您的手机OS API相匹配的正确支持库。

2.-假设两个设备在OS API上都相似,则可以尝试两种不同的方法。

a)将 零作为参数传递给ColorDrawable :)

    getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(0));
Run Code Online (Sandbox Code Playgroud)

b) 创建另一个活动以仅显示您的对话框并隔离与父活动有关的主题(这肯定是导致问题的原因),请执行以下操作。

    <style name="Transparent" parent="@android:style/Theme.NoTitleBar">
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>      
    <item name="android:backgroundDimEnabled">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)

上面是您必须与对话框活动关联的主题,然后在XML布局上使用以下内容。

android:background="#aa000000" 
Run Code Online (Sandbox Code Playgroud)

您可以将这种方法应用于对话,显示DEMO屏幕或说明性的活动:)


ngo*_*ire 5

您可以尝试一下,但是似乎已经建议了...?

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
Run Code Online (Sandbox Code Playgroud)

相反,您是否尝试过类似的方法?

 <style name="TransparentDialogTheme" parent="android:Theme.Holo.Dialog.NoActionBar">
     <item name="android:windowBackground">@color/transparent</item>
     <item name="android:colorBackgroundCacheHint">@null</item>
 </style>
Run Code Online (Sandbox Code Playgroud)

然后,当您进行对话框时,请尝试...。

final Dialog dialog = new Dialog(this, R.style.TransparentDialogTheme); 
Run Code Online (Sandbox Code Playgroud)

这有点矫kill过正,但如果您确实需要,可能也需要:

<resources xmlns:android="http://schemas.android.com/apk/res/android">

<style name="TransparentDialog" parent="@android:style/Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowBackground">@color/orange_transparent</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowTitleStyle">@null</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:gravity">center</item>
</style>

</resources>
Run Code Online (Sandbox Code Playgroud)