我有一个占据屏幕一部分的活动(它的样式为style/android:Theme.Holo.Dialog.NoActionBar
),因此堆栈中的其他活动在其下方可见。
当单击活动上的按钮时,它会显示一个系统对话框,活动应该从视图中消失,但活动必须仍然存在,因为它作为回调传递给系统对话框。
我尝试将根视图(RelativeLayout)的可见性设置为INVISIBLE,但这只会将活动变为黑色,并且在系统对话框下方可见。将视图的alpha设置为0.0也具有相同的效果。
将视图的可见性设置为GONE具有所需的效果,但是有一种奇怪的动画类型,其中活动变黑并且在系统对话框出现之前缩小尺寸到一个微小的视图。这很快发生,但看起来很奇怪。操作系统必须做的事情,因为我当然没有做任何事情来创造这种效果。
我是否有另一种方法可以隐藏获得所需结果的活动,而不是一个奇怪的副作用神器动画?
答案 0 :(得分:4)
首先,按照以下步骤使您的活动窗口保持半透明:How do I create a transparent Activity on Android?
然后你可以用FrameLayout
包装整个活动布局(透明背景),并在显示对话框时将FrameLayout
包裹的视图设置为View.INVISIBLE
。
这似乎适用于您的解决方案。让我知道。
要指定主题,请将其用作新主题的父级,如下所示:
<resources>
<style name="Theme.YourCustomTransparentTheme" parent="android:Theme.Holo.Dialog.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
这样就可以维护所有其他属性,并添加透明功能。