Обновился до 4.2RC1 и прозрачные действия не работают? Вдруг черный

У меня есть действие в боковом меню, которое появляется поверх другого действия.

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

а теперь .. не работает!

Нижняя область черная.

Полная тайна.

Какие-нибудь решения?

1 ответ

Решение

любезно предоставьте этот замечательный старый пост, в котором несколько лет назад возникла аналогичная проблема: qaru

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). Таким образом, вы можете получить обычную вещь, когда «левое меню» или подобное закрывает также строку заголовка основного приложения.)

Другие вопросы по тегам