Fixed
Status Update
Comments
al...@google.com <al...@google.com>
gs...@gmail.com <gs...@gmail.com> #2
Trying to reproduce this on my 4.2.2 (v17) Nexus 4. Added this drawable:
<transition xmlns:android="http://schemas.android.com/apk/res/android " >
<item android:drawable="@drawable/test_drawable_blue"/>
<item android:drawable="@drawable/test_drawable_green"/>
</transition>
where blue/green drawables look like this:
<shape
xmlns:android="http://schemas.android.com/apk/res/android "
android:shape="rectangle">
<size
android:width="@dimen/drawable_large_size"
android:height="@dimen/drawable_small_size" />
<solid
android:color="@color/test_blue" />
</shape>
Then added this test:
@Test
public void testMutateTransitionDrawable() {
Drawable drawable = ResourcesCompat.getDrawable(mResources,
R.drawable.test_transition_drawable, null);
assertTrue(drawable instanceof TransitionDrawable);
Drawable mutated = drawable.mutate();
assertTrue(drawable instanceof TransitionDrawable);
assertTrue(mutated instanceof TransitionDrawable);
}
It passes on the device. Going to also try on other earlier devices a bit later in the day once they are charged.
<transition xmlns:android="
<item android:drawable="@drawable/test_drawable_blue"/>
<item android:drawable="@drawable/test_drawable_green"/>
</transition>
where blue/green drawables look like this:
<shape
xmlns:android="
android:shape="rectangle">
<size
android:width="@dimen/drawable_large_size"
android:height="@dimen/drawable_small_size" />
<solid
android:color="@color/test_blue" />
</shape>
Then added this test:
@Test
public void testMutateTransitionDrawable() {
Drawable drawable = ResourcesCompat.getDrawable(mResources,
R.drawable.test_transition_drawable, null);
assertTrue(drawable instanceof TransitionDrawable);
Drawable mutated = drawable.mutate();
assertTrue(drawable instanceof TransitionDrawable);
assertTrue(mutated instanceof TransitionDrawable);
}
It passes on the device. Going to also try on other earlier devices a bit later in the day once they are charged.
gs...@gmail.com <gs...@gmail.com> #3
Also not reproducible on Galaxy Nexus running 4.0.1 (v14), 4.0.4 (v15) and 4.2.2 (v17)
[Deleted User] <[Deleted User]> #4
ca...@google.com <ca...@google.com> #5
I checked the behavior and what happens is:
- API 30:
setAppearancLightStatusBars
conflicts withSYSTEM_UI_FLAG_LIGHT_STATUS_BAR
. The workaround is to unset SYSTEM_UI_FLAG_LIGHT_STATUS_BAR, or setwindowLightStatusBar=false
. This is a platform bug, a workaround will be implemented incore
. - on API < 30: there is indeed a documentation issue that will be fixed, but the behavior is correct.
ca...@google.com <ca...@google.com> #6
Since an easy workaround is possible, this doesn't need to block the release.
[Deleted User] <[Deleted User]> #7
Small addition to #5: It seems like the platform behaviour has changed in Android 12 Beta. So with the WindowInsetsControllerCompat it now seems like:
- API > 30: can toggle back and forth
- API == 30: cannot toggle|
- API < 30: can toggle
ap...@google.com <ap...@google.com> #8
Project: platform/frameworks/support
Branch: androidx-main
commit 4b9ea4a8a3e548875e5a5a13f8a7a61ceea58746
Author: Ioana Moraru <ioanamoraru@google.com>
Date: Fri Jul 30 22:17:56 2021
Partially fix setAppearanceLightStatusBars in API 30
WindowInsetsControllerCompat.setAppearanceLightStatusBars not working with windowLightStatusBar=true in API 30. This commit fixes it for the WindowInsetsControllerCompat(window, compatController).
Bug: 180881870
Test: Set windowLightStatusBar=true and trigger setAppearanceLightStatusBar
Test:WindowInsetsControllerCompatActivityTest#systemBar_light_theme
Change-Id: I8961fc92b973ce0357d4d5f0c8919a3b8fe8a460
M core/core/src/androidTest/java/androidx/core/view/WindowInsetsControllerCompatActivityTest.kt
M core/core/src/main/java/androidx/core/view/WindowInsetsControllerCompat.java
https://android-review.googlesource.com/1783607
Branch: androidx-main
commit 4b9ea4a8a3e548875e5a5a13f8a7a61ceea58746
Author: Ioana Moraru <ioanamoraru@google.com>
Date: Fri Jul 30 22:17:56 2021
Partially fix setAppearanceLightStatusBars in API 30
WindowInsetsControllerCompat.setAppearanceLightStatusBars not working with windowLightStatusBar=true in API 30. This commit fixes it for the WindowInsetsControllerCompat(window, compatController).
Bug: 180881870
Test: Set windowLightStatusBar=true and trigger setAppearanceLightStatusBar
Test:WindowInsetsControllerCompatActivityTest#systemBar_light_theme
Change-Id: I8961fc92b973ce0357d4d5f0c8919a3b8fe8a460
M core/core/src/androidTest/java/androidx/core/view/WindowInsetsControllerCompatActivityTest.kt
M core/core/src/main/java/androidx/core/view/WindowInsetsControllerCompat.java
ca...@google.com <ca...@google.com>
[Deleted User] <[Deleted User]> #9
Which release will include this fix?
ca...@google.com <ca...@google.com> #10
This should be in 1.7.0-beta02.
ap...@google.com <ap...@google.com> #11
Project: platform/frameworks/support
Branch: androidx-main
commit 81f994d8759b8a374d8fb2db1032306c614749dc
Author: Alex Vanyo <vanyo@google.com>
Date: Thu Jan 27 01:28:23 2022
Set system bar appearance flags on API 30 anyway
Issue 180881870 wasn't fully fixed, in the case where the theme had
android:windowLightStatusBar=true and the only interaction was calling
WindowInsetsControllerCompat.isAppearanceLightStatusBars=false
Additionally, the navigation bars scrim wasn't updating properly on API
30, even though the icons were changing.
As an update for both of these, on API 30 we set the corresponding
systemUiVisibility flags anyway, in addition to calling through to the
platform WindowInsetsController.
Fixes: 215832843,180881870
Test: manual + flag test updates
Change-Id: I654496f7701f342eec8fd0e18e4bd353dd4fb2bc
M core/core/src/androidTest/java/androidx/core/view/WindowInsetsControllerCompatActivityTest.kt
M core/core/src/main/java/androidx/core/view/WindowInsetsControllerCompat.java
https://android-review.googlesource.com/1962461
Branch: androidx-main
commit 81f994d8759b8a374d8fb2db1032306c614749dc
Author: Alex Vanyo <vanyo@google.com>
Date: Thu Jan 27 01:28:23 2022
Set system bar appearance flags on API 30 anyway
android:windowLightStatusBar=true and the only interaction was calling
WindowInsetsControllerCompat.isAppearanceLightStatusBars=false
Additionally, the navigation bars scrim wasn't updating properly on API
30, even though the icons were changing.
As an update for both of these, on API 30 we set the corresponding
systemUiVisibility flags anyway, in addition to calling through to the
platform WindowInsetsController.
Fixes: 215832843,180881870
Test: manual + flag test updates
Change-Id: I654496f7701f342eec8fd0e18e4bd353dd4fb2bc
M core/core/src/androidTest/java/androidx/core/view/WindowInsetsControllerCompatActivityTest.kt
M core/core/src/main/java/androidx/core/view/WindowInsetsControllerCompat.java
sa...@gmail.com <sa...@gmail.com> #12
Which version includes the fix in #11?
va...@google.com <va...@google.com> #13
The fix in #11 was first released in 1.8.0-alpha04
, and will be in future releases as well.
sa...@gmail.com <sa...@gmail.com> #14
There is a crash that is very likely related to `1.8.0-alpha04`
```
Caused by java.lang.NullPointerException: Attempt to read from field 'int android.view.WindowManager$LayoutParams.flags' on a null object reference
at androidx.core.view.WindowInsetsControllerCompat$Impl20.unsetWindowFlag(WindowInsetsControllerCompat.java:511)
at androidx.core.view.WindowInsetsControllerCompat$Impl26.setAppearanceLightNavigationBars(WindowInsetsControllerCompat.java:597)
at androidx.core.view.WindowInsetsControllerCompat.setAppearanceLightNavigationBars(WindowInsetsControllerCompat.java:226)
```
On androids 10,9,8
Might it by any chance be already fixed in `1.8.0-alpha06`?
```
Caused by java.lang.NullPointerException: Attempt to read from field 'int android.view.WindowManager$LayoutParams.flags' on a null object reference
at androidx.core.view.WindowInsetsControllerCompat$Impl20.unsetWindowFlag(WindowInsetsControllerCompat.java:511)
at androidx.core.view.WindowInsetsControllerCompat$Impl26.setAppearanceLightNavigationBars(WindowInsetsControllerCompat.java:597)
at androidx.core.view.WindowInsetsControllerCompat.setAppearanceLightNavigationBars(WindowInsetsControllerCompat.java:226)
```
On androids 10,9,8
Might it by any chance be already fixed in `1.8.0-alpha06`?
va...@google.com <va...@google.com> #15
Correct, based on the stacktrace that crash should no longer occur on 1.8.0-alpha06
. Have you had a chance to try out 1.8.0-alpha06
and see if it still occurs?
sa...@gmail.com <sa...@gmail.com> #16
Yes it seems to be fixed
va...@google.com <va...@google.com> #17
Glad to hear it!
Description
Component used: androidx.appcompat:appcompat
Version used: 1.3.0-beta01
Devices/Android versions reproduced on: Pixel 5 API 30, Emulator Pixel 4 API 30
If this is a bug in the library, we would appreciate if you could attach:
windowLightStatusBar=false
without issues, and a demo withwindowLightStatusBar=true
showing the issue.The code in the sample project: