gpt4 book ai didi

Android:透明 Activity 的问题

转载 作者:行者123 更新时间:2023-12-03 18:56:54 28 4
gpt4 key购买 nike

最近,在我们的一个生产应用程序上,透明 Activity 已停止工作。
我的意思是它变成了黑色背景而不是透明。当我将 Activity 的背景颜色设置为纯色(即红色、绿色等)时,它的应用没有问题。
问题可能是由迁移到 AndroidX 引起的,但我没有这方面的证据。
经过数小时的调试、测试和阅读相关 SO 主题后,我终于能够确定问题发生的情况。
我的测试环境是very simple clean project with two activities (您可以在链接下查看完整代码)。
工作状态条件
只有当我的“themes.xml”文件非常简单时,我才能使第二个 Activity 透明。您可以在后台看到第一个 Activity :
enter image description here
非工作状态条件
添加一个简单的样式就足够了,即使里面没有项目,也没有 parent ,使背景变成黑色而不是透明:
enter image description here
这是我的“themes.xml”:

<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.MyApplication" parent="Theme.AppCompat.Light">
<item name="android:windowBackground">@android:color/white</item>
</style>

<style name="Transparent" parent="Theme.AppCompat.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>

<!-- By removing this style I can make transparent activity to work -->
<style name="ScrollViewStyle" />

</resources>
和“AndroidManifest.xml”:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication">
<activity
android:name=".SecondActivity"
android:label="@string/title_activity_second"
android:theme="@style/Transparent" />
<activity
android:name=".MainActivity"
android:label="@string/title_activity_first">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
我希望有人能够帮助我获得这种奇怪行为的技术解释。

最佳答案

作为一种解决方法,我可以通过将其主题设置为 android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 来使 Activity 透明。直接在 list 中。请注意“直接”,因为如果我什至以上述主题作为父主题创建自定义空主题,它将不起作用。
但是这个解决方案有局限性:

  • 无法自定义行为,例如使用对话框进入/退出过渡动画等。
  • Activity 应该扩展 Android Activity,而不是 AppCompatActivity。
  • 我还必须为此 Activity 的 Root View 设置透明背景以实现透明度。
  • 关于Android:透明 Activity 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65795426/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com