Status Update
Comments
si...@google.com <si...@google.com>
al...@lyft.com <al...@lyft.com> #2
Hi. Thanks for reporting this. Fixed in alpha-04
si...@google.com <si...@google.com> #3
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
al...@gmail.com <al...@gmail.com> #4
an...@gmail.com <an...@gmail.com> #5
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.tv:tv-material:1.0.0-alpha04
al...@gmail.com <al...@gmail.com> #6
This issue is also important for accessibility. When the maximum length is reached, Talkback should automatically announce "Maximum length reached" like it does with views.
al...@gmail.com <al...@gmail.com> #7
ha...@google.com <ha...@google.com> #8
BasicTextField2 introduces InputTransformation
API that has a prefab maxLengthInChars
and maxLengthInCodepoints
factory functions. These will correctly update the IME whenever the max length is reached. Current BasicTextField holds 3 states including the hoisted one that does the filtering. Before filtering is committed in the next composition, IME for a brief period of time thinks that every key stroke is accepted by the editor. InputTransformation
prevents this by executing the callback at the right time.
Also, thanks for pointing out the maxLength a11y node info property. We will take this into account.
ap...@google.com <ap...@google.com> #9
Branch: androidx-main
commit fc0d3637cd2030cde12f4eb00c687d6f46dd97e7
Author: Halil Ozercan <halilibo@google.com>
Date: Fri Feb 09 14:53:31 2024
Add MaxTextLength to semantics for a11y
MaxTextLength is used by talkback to announce that the text field has reached its maximum length. Current TextField APIs fully hoist the filtering mechanism, so it's not possible to infer whether a max length filter is applied. Devs will need to explicitly add this info to their semantics.
A follow-up CL will address this requirement for the new BasicTextField(state).
Bug: 170648072
Test: gradle :compose:ui:ui:cAT
Relnote: "Add `maxTextLength` semantics property that should be set on text fields that filter the maximum allowed number of characters."
Change-Id: I24d9f6b2aa6f1e94b67847464314480dd80e8245
M compose/ui/ui/api/current.txt
M compose/ui/ui/api/restricted_current.txt
M compose/ui/ui/src/androidInstrumentedTest/kotlin/androidx/compose/ui/AndroidComposeViewAccessibilityDelegateCompatTest.kt
M compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat.android.kt
M compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt
ap...@google.com <ap...@google.com> #10
Branch: androidx-main
commit 17ed60946fd0000d84dd81f318577b2d389951a9
Author: Halil Ozercan <halilibo@google.com>
Date: Fri Feb 09 15:27:14 2024
Semantics override for InputTransformation
With the addition of MaxTextLength semantics property, MaxLengthFilter should also be able to change the semantics of the `BasicTextField2` that it's attached to. Moreover, any custom `InputTransformation` may have different semantics implications. Rather than adding extra semantics modifiers to TextFields, `InputTransformation` should be able to influence the semantics organically.
Bug: 170648072
Test: gradle :compose:foundation:foundation:cAT
Relnote: "Add an optional `applySemantics` function to `InputTransformation` to influence the semantics of the `BasicTextField2` that it's applied to."
Change-Id: I74a2f4db178fe2660862749f10367bac57761ae9
M compose/foundation/foundation/api/current.txt
M compose/foundation/foundation/api/restricted_current.txt
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text/input/BasicTextFieldSemanticsTest.kt
M compose/foundation/foundation/src/androidUnitTest/kotlin/androidx/compose/foundation/text/input/InputTransformationTest.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/input/InputTransformation.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/input/internal/TextFieldDecoratorModifier.kt
ha...@google.com <ha...@google.com> #11
I'm closing this issue since we now ship a prefab InputTransformation.maxLength
that also applies MaxTextLength semantics.
Description
We should put a maxLength into TextField and set a default value.