Fixed
Status Update
Comments
ni...@google.com <ni...@google.com>
ni...@google.com <ni...@google.com> #2
Hi. Thanks for reporting this. Fixed in alpha-04
ap...@google.com <ap...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit e782987543a9f8ccd485e970ddc74564b24378db
Author: Vighnesh Raut <vighnesh.raut13@gmail.com>
Date: Mon Jan 02 15:27:40 2023
fix: tab row crashes when only 1 tab is added
Bug: b/264018028
Test: Added unit test
Change-Id: I6381dbac304fc1d69d3708c6655f8b595668e93f
M tv/tv-material/src/androidTest/java/androidx/tv/material/TabRowTest.kt
M tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
https://android-review.googlesource.com/2373449
Branch: androidx-main
commit e782987543a9f8ccd485e970ddc74564b24378db
Author: Vighnesh Raut <vighnesh.raut13@gmail.com>
Date: Mon Jan 02 15:27:40 2023
fix: tab row crashes when only 1 tab is added
Bug:
Test: Added unit test
Change-Id: I6381dbac304fc1d69d3708c6655f8b595668e93f
M tv/tv-material/src/androidTest/java/androidx/tv/material/TabRowTest.kt
M tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
ni...@google.com <ni...@google.com>
ni...@google.com <ni...@google.com> #4
deleted
Description
===== DESCRIPTION =====
=======================
Consider the following vector drawable:
```
<vector xmlns:android="
xmlns:aapt="
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#f00"
android:pathData="M 0 0 h 12 v 12 h -12 v -12 z" />
<path
android:pathData="M 4 4 h 12 v 12 h -12 v -12 z"
android:strokeWidth="3">
<aapt:attr name="android:fillColor">
<gradient
android:endX="14.0"
android:endY="14.0"
android:startX="6.0"
android:startY="6.0"
android:type="linear">
<item
android:color="#0f0"
android:offset="0" />
<item
android:color="#00f"
android:offset="1" />
</gradient>
</aapt:attr>
<aapt:attr name="android:strokeColor">
<gradient
android:endX="14"
android:endY="14"
android:startX="6"
android:startY="6"
android:type="linear">
<item
android:color="#000"
android:offset="0" />
<item
android:color="#fff"
android:offset="1" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#0ff"
android:pathData="M 14 14 h 8 v 8 h -8 v -8 z"
android:strokeWidth="2"
android:strokeColor="#ff0" />
</vector>
```
=============================
===== EXPECTED BEHAVIOR =====
=============================
The vector is correctly rendered on API 28 (see the vector-drawable-gradient-bug-api28.png attachment).
===========================
===== ACTUAL BEHAVIOR =====
===========================
The vector is incorrectly rendered on API 22 (see the vector-drawable-gradient-bug-api22.png attachment).
=======================
===== SOURCE CODE =====
=======================
I believe the issue is in the following source code:
Specifically, if the fill/stroke is NOT a gradient, we need to set the fill/stroke paint's shader back to null so that it doesn't continue to use a shader used by a previous vector drawable path.
======================
===== OTHER INFO =====
======================
Tested using 'androidx.appcompat:appcompat:1.0.0' on API 22 and API 28.
I've attached a sample project that can be used to reproduce the issue to this bug report.
Please assign this bug to Nick Butcher (nickbutcher@google.com) as I know he was the one who wrote the backported vector drawable gradient code.