2

我有一个侧菜单活动,它出现在另一个活动之上。

<style name="Sidemenu" parent="Usual">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsTranslucent">true</item>

    <item name="android:windowContentOverlay">@null</item>
    <item name="android:backgroundDimEnabled">false</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
</style>

它一直运行良好。像往常一样,您可以看到下面的活动。

但是我只是将 Android Studio 更新为 4.2RC1 ..

现在..它不起作用!

下面的区域是黑色的。

完全神秘。

周围有什么解决方案吗?

4

1 回答 1

8

礼貌这个惊人的旧帖子几年前有类似的问题:https ://stackoverflow.com/a/35915764/294884

4.2RC1 解决方法:

(1) 这是另一个机器人活动/主题错误

(2)在清单中,您必须将主题设置为 Theme.AppCompat.Dialog

    // side menu
    <activity android:name=".. LeftMenu" android:theme="@style/Theme.AppCompat.Dialog" />
    <!-- beware of insane droid transparent activity bug... -->

(3)只有在代码中,您才能将主题设置为您的主题。(在超级之前这样做)

protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.YourTransparentTheme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.aty_leftmenu);
}

(4) 您自己的风格主题将是:

<style name="YourTransparentTheme" parent="YourGeneralTheme">
    <item name="android:windowBackground">@android:color/transparent</item>
    .. and other colors etc you desire ..
</style>

为什么只需要 windowBackground 的详细信息: https ://stackoverflow.com/a/67040753/294884

总之,该错误的解决方法是:

必须在清单中设置 Theme.AppCompat.Dialog。您只能在 onCreate 中设置自己的样式。

(旁白:请注意,如果您的大多数活动都有标题栏(因此基于 Theme.AppCompat.Light),但您的透明活动没有标题栏(因此基于 Theme.AppCompat.Light.NoActionBar),这没有问题。通过这种方式,您可以拥有通常的东西,其中“左侧菜单”或类似内容也覆盖了主应用程序的标题栏。)

于 2021-04-11T12:46:26.977 回答