Status Update
Comments
nj...@google.com <nj...@google.com>
ap...@google.com <ap...@google.com> #2
First of all thanks for this detailed issue.
This issue had been investigated thoroughly when it was first reported internally. The surprising detail in this report is that the issue is not reproducible before 1.7
. I will look into this.
The main problem with POBox is the fact that it is deprecated. Since 2021 Sony has been shipping new Xperia devices with Gboard pre-installed. Although we are aware that there is still a considerable amount of users still using POBox, the described behavior is caused by POBox's noncompliant behavior with InputConnection
and InputMethodManager
documentation. However, this is understandable since TextView
implementation was also not respecting the behavior that is expected from Editors.
Ultimately we have decided to enforce the documented behavior with specifically regards to when editors should call InputMethodManager.updateSelection
. Also, although unconfirmed, there were traces of possible custom code being included in Sony OEM images that changed how InputMethodManager was notified from TextView. If POBox also depended on something like this, it would be impossible for Compose code to replicate the same unknown behavior.
Description
Current incorrect behavior
The link to source code ).
painterResource()
currently only supports inflatingandroid:tint
if it references a simpleCOLOR_INT
resource type, meaning thatColorStateList
s or theme attributes pointing toColorStateList
s are simply ignored (Desired correct behavior
android:tint
should inflate the color state list usingTypedArrayUtils#getNamedColor()
instead, which would default to theColorStateList
's default value (sinceCompose
does not have any understanding of drawable states used withView
s).This behavior would mirror the way that here , which returns a here ).
ColorStateList
s are currently handled in a<path>
'sandroid:fillColor
andandroid:strokeColor
, both of which fallback to theColorStateList
's default color (they inflate usingTypedArrayUtils#getNamedComplexColor()
ComplexColor
wrapper around aColorStateList
. Then when the vector is rendered to the display, a simpleSolidColor
using the color state list's default color is returnedThis would closely mirror the way that source code here ).
VectorDrawableCompat
is inflated, which usesTypedArrayUtils#getNamedColorStateList()
(Reasons for fixing the bug
android:fillColor
andandroid:strokeColor
currently support color state lists butandroid:tint
does not. Ideally they should both be supported if possible.Many teams adopting Compose don't have an Icon solution as elegant as Material's (which generates
ImageVector
s as part of a separate artifact automatically). For example, our team, plans to continue inflating icons from our existing icon library defined in XML resources while adopting Compose, and all of these resources currently declare a default tint color usingandroid:tint
.Version used: Compose v1.0.1