如何在Android上创建一个透明的Activity?

1016

我想在另一个Activity之上创建一个透明的Activity。

我该如何实现这一目标?


你能告诉我们透明活动的用途是什么吗? - Mohamed Ben Romdhane
25个回答

0

其他解决方案对我有用,但我注意到可能会影响某些人的问题。当我像这样启动我的活动:

Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);

不要使用像这样的一行代码

startActivity(new Intent(this, MainActivity.class));

我只得到了黑色背景,这真是令人头疼。我还没有弄清楚是什么原因导致的,我猜测可能与设备有关(在小米上测试过)。因此,传递值也需要像这样。

startActivity(new Intent(this, MainActivity.class)
                            .putExtra("SOME_VALUE", value)
                            .putExtra("ANOTHER_VALUE", value2));

编辑: 将样式的父级更改为 Theme.AppCompat.Light.NoActionBar 似乎已经解决了这个问题。


0

只需将此放入style.xml中

<item name="android:windowBackground">@android:color/transparent</item>

或者在清单文件中添加

<activity android:name=".usual.activity.Declaration" 
 android:theme="@android:style/Theme.Translucent.NoTitleBar" />

0

您可以从您的活动中删除setContentView(R.layout.mLayout),并将主题设置为android:theme="@style/AppTheme.Transparent"。请查看链接以获取更多详细信息。


0
所有这些答案可能会让人感到困惑,透明活动和无界面活动之间存在差异。
使用以下内容:

android:theme="@android:style/Theme.Translucent.NoTitleBar"

将活动设置为透明,但会阻塞用户界面。

如果您想要一个无界面的活动,请使用以下代码:

android:theme="@android:style/Theme.NoDisplay"


有趣!在非 UI 活动的情况下,用户可见的上一个活动的 UI 可以进行交互,例如按钮点击、列表视图滑动等? - Ramakrishna Joshi

-1

除了gnobal提供的解决方案,我还需要在特定活动的布局文件中将alpha设置为0,因为在某些手机上(运行Android 10的Redmi Narzo 20 pro),屏幕的对话框部分显示出来,而这个屏幕本应该是透明的。由于某种原因,windowIsFloating导致了这个问题,但是如果将其删除,我就无法得到期望的输出。

步骤:

将以下内容添加到位于res>values>styles.xml下的style.xml中:
``` ```
在AndroidManifest.xml文件中设置使用上述样式的活动主题:
``` ```
在应用了以上样式的活动的布局文件中,将其父布局元素的alpha值设置为0(`android:alpha="0"`):
``` ```
请注意:
您需要使用Activity()类扩展您的活动,而不是AppCompatActivity类,以使用上述解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接