Android 如何使活动在运行时不可见/透明,而不会出现奇怪的收缩行为?

Android 如何使活动在运行时不可见/透明,而不会出现奇怪的收缩行为?,android,android-activity,Android,Android Activity,我有一个活动占据了屏幕的一部分(它的样式是style/android:Theme.Holo.Dialog.NoActionBar),因此堆栈中的另一个活动在它下面可见 单击“活动”上的按钮时,它会显示一个系统对话框,该“活动”应该会从视图中消失,但该“活动”在作为回调传递到系统对话框时必须仍然存在 我尝试将根视图(RelativeLayout)的可见性设置为不可见,但这只会将活动变为黑色,并且在系统对话框下可见。将视图的alpha设置为0.0也具有相同的效果 将视图的可见性设置为“消失”具有所需

我有一个活动占据了屏幕的一部分(它的样式是
style/android:Theme.Holo.Dialog.NoActionBar
),因此堆栈中的另一个活动在它下面可见

单击“活动”上的按钮时,它会显示一个系统对话框,该“活动”应该会从视图中消失,但该“活动”在作为回调传递到系统对话框时必须仍然存在

我尝试将根视图(RelativeLayout)的可见性设置为不可见,但这只会将活动变为黑色,并且在系统对话框下可见。将视图的alpha设置为0.0也具有相同的效果

将视图的可见性设置为“消失”具有所需的效果,但存在一种奇怪的动画类型,即活动变为黑色,并在系统对话框出现之前缩小为一个小视图。这种情况发生得很快,但看起来很奇怪。这是操作系统必须做的事情,因为我肯定没有做任何事情来创造这种效果


是否有另一种方法可以隐藏活动,以获得所需的结果,并且不会产生奇怪的副作用工件动画?

首先,按照以下步骤使活动窗口半透明:

然后,您可以使用
FrameLayout
包装整个活动布局(背景透明),并在显示对话框时将
FrameLayout
包装的视图设置为
视图。不可见

这似乎对您的解决方案很有效。让我知道

要指定主题,请将其用作新主题的父级,如下所示:

<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>

真的
@android:彩色/透明
@空的
真的
真的
假的

这样,您的所有其他属性都将得到维护,您将添加透明功能。

尝试先显示对话,然后再执行活动。这不是显示对话的活动,而是主题为对话的活动。从对话中,我指的是您问题中提到的系统对话。谢谢您的建议,但是,在我将“活动”设置为“消失”之前,系统对话框已经被调用。它已经具有主题:theme.Holo.dialog.NoActionBar。怎么可能指定它应该有一个全息对话主题和一个透明主题呢?谢谢,我稍后会尝试(现在没有时间),如果它有效的话,我会接受答案。这样就省去了做奇怪缩小事情的活动。然而,我之所以使用Theme.Holo.Dialog,是因为有了这个主题,操作系统会自动调暗背景。但是当使用自定义主题时,这种暗显不再发生。请尝试将属性android:backgroundDimEnabled更改为true。。。应该还能用哦,我没发现。我还没喝早上的咖啡。谢谢你的回答和帮助。