我正在使用此代码应用具有透明背景的颜色。
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(MyColor));
它在我的手机上工作得非常好,但在我的平板电脑中却无法正常工作
显示我的dialig上有白色和灰色背景(我使用自定义视图和背景设置为@null):
答案 0 :(得分:6)
根据您的帖子,我有一些问题可能导致这些问题具有透明度。
1 .- 由于您的平板电脑正在显示不同的呈现,因此操作系统API可能低于您手机上的版本?如果是这种情况,请尝试使用与您的手机操作系统API匹配的适当支持库。
2 .- 假设两个设备在OS API上相似,您可以尝试两种不同的方法。
a) 将ZERO作为ColorDrawable的参数传递:)
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(0));
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>
以上是您必须与对话框活动相关联的主题,然后在XML布局上使用以下内容。
android:background="#aa000000"
您可以将此方法应用于对话,显示DEMO屏幕或教学所需的活动:)
答案 1 :(得分:5)
你可以试试这个,但似乎已经建议了这个......?
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
相反,你试过这样的事吗?
<style name="TransparentDialogTheme" parent="android:Theme.Holo.Dialog.NoActionBar">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
</style>
然后,当你进行对话时,试试这个....?
final Dialog dialog = new Dialog(this, R.style.TransparentDialogTheme);
这有点矫枉过正,但如果你确实需要它可能也需要它:
<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>
答案 2 :(得分:3)
问题在于,AlertDialog构建器实际上不适合设计透明对话框,并且将始终具有黑色背景,实际上是它的主题,而是使用对话框来创建透明主题。
<强>示例:强>
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.show();
使用Dialog不需要对透明背景进行任何主题操作,因此基本上很容易。
答案 3 :(得分:1)
这对我有用:
alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
如果没有,请查看this post
答案 4 :(得分:1)
使用它:
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.show();
答案 5 :(得分:1)
你也需要禁用昏暗:
Window w = dialog.getWindow();
w.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
LayoutParams lp = w.getAttributes();
lp.flags &= ~LayoutParams.FLAG_DIM_BEHIND;
lp.dimAmount = 0;
w.setAttributes(lp);
答案 6 :(得分:0)
我建议您创建一个透明背景的活动,然后根据您的要求在活动中显示您想要的内容并轻松进行自定义。这是让你入门的东西
How do I create a transparent Activity on Android?
在我尝试实现类似的功能时,帮助了我很多,以便在我的应用中显示繁忙的屏幕。我希望你觉得这很有帮助,请告诉我你走哪条路。祝你好运。
答案 7 :(得分:0)
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
这在lolipop以下的api以及上面或lolipop使用
都没问题android:background="@android:color/transparent"
在对话框片段的父布局中,所以在nutsell中使用两者来解决所有api中的这个问题。
答案 8 :(得分:0)
首先添加这样的风格
if (interstitialAdWasDisplayed) {
finish();
} else {
finishAfterTransition();
}
之后,在创建对话框时,您也可以按如下方式设置此样式。
<style name="customStyleDialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:background">@android:color/transparent</item>
</style>
确保在视图中添加通过
设置为此对话框的背景颜色Dialog dialog = new Dialog(getActivity(), R.style.customStyleDialog);
// other settings to the dialog
// for making work transparency on low level devices add next line too after show
// dialog
dialog.show();
dialog.getWindow().setBackgroundDrawable(newColorDrawable(android.graphics.Color.TRANSPARENT));
答案 9 :(得分:0)
在对话框中使用主题。
<style name="Dialog_Transparent" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
public class RProgressDg extends Dialog {
public RProgressDg(Context context) {
this(context, R.style.Dialog_Transparent);
}
public RProgressDg(final Context context, int theme) {
super(context, theme);
this.setContentView(R.layout.dg_pro_round);
}
}