Status Update
Comments
pa...@google.com <pa...@google.com> #2
Hi,
I also see my text cut off when I set maxLines = 2
. Is it the same issue?
Box(
modifier =
Modifier.size(
width = 108dp,
height = 34dp,
),
contentAlignment = Alignment.Center,
) {
BasicText(
text = "text text text",
maxLines = 2,
autoSize = AutoSize.StepBased(minFontSize = 1.sp, maxFontSize = 13.sp, stepSize = 0.2.sp),
)
}
jo...@google.com <jo...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
Author: Jossi Wolf <
Link:
Fix TextAutoSize bug with maxLines = 1
Expand for full commit details
Fix TextAutoSize bug with maxLines = 1
We were overcaching the paragraphIntrinsics in MultiParagraphLayoutCache when mutating the style. For `AutoSizeStepBased` instances with biased windows (more values smaller/bigger than the optimal), this could result in performing layout with outdated intrinsics, and thus an outdated style and font size, without surfacing this in the TextLayoutResult.
Test: New MultiParagraphLayoutCacheTests and manual testing
Relnote: Fixed a bug in BasicText with TextAutoSize and maxLines set to 1.
Fixes: 376834366
Change-Id: Ic0450c763c5d764492995b44ee1fe570246a9689
Files:
- M
compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text/modifiers/MultiParagraphLayoutCacheTest.kt
- M
compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache.kt
Hash: e1b712d78cc60384ed67a56c006148291ba146a6
Date: Tue Jan 07 18:52:26 2025
pa...@google.com <pa...@google.com> #4
#2, yeah, that's the same issue.
jo...@google.com <jo...@google.com> #5
Thanks @jo...@google.com for fixing this! Do you know when the fix would be available for g3 apps?
je...@google.com <je...@google.com> #6
Moving the internal discussion offline. The bug is fixed and the fix available in snapshot builds. We will comment on this issue when the bug fix is included in a release.
je...@google.com <je...@google.com> #7
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.compose.foundation:foundation:1.8.0-beta01
androidx.compose.foundation:foundation-android:1.8.0-beta01
androidx.compose.foundation:foundation-jvmstubs:1.8.0-beta01
androidx.compose.foundation:foundation-linuxx64stubs:1.8.0-beta01
pa...@google.com <pa...@google.com>
ap...@google.com <ap...@google.com> #8
Branch: androidx-main
commit ce81b84e699a64e9538bb57d3dcdf25fdd5151c1
Author: Jelle Fresen <jellefresen@google.com>
Date: Tue Jan 19 18:44:09 2021
Use ComposeTestRule without launching Activity
The factory method createEmptyComposeRule has been added that creates an
AndroidComposeTestRule that does not start any Activity. To make sure
one can't call setContent (which uses the started Activity) on that test
rule, the ComposeTestRule interface has been split into ComposeTestRule
and ComposeContentTestRule, with the latter containing setContent and
the former containing all the other methods. createEmptyComposeRule's
return type is ComposeTestRule, without setContent.
Fixes: 174472899
Test: Added LateActivityLaunchTest
Relnote: "Introduced `ComposeContentTestRule`, which extends
`ComposeTestRule` and defines `setContent`, which has been removed from
`ComposeTestRule`. Added a factory method `createEmptyComposeRule()`
that returns a `ComposeTestRule` and does not launch an Activity for
you. Use this when you want to launch your Activity during your test,
e.g. using `ActivityScenario.launch`"
Change-Id: I9d78283c27d87a3135071884e115bbd814492c47
M compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/FoundationTest.kt
M compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldScrollTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/DrawerScreenshotTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MaterialRippleThemeTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MaterialTest.kt
M compose/ui/ui-test-junit4/api/current.txt
M compose/ui/ui-test-junit4/api/public_plus_experimental_current.txt
M compose/ui/ui-test-junit4/api/restricted_current.txt
M compose/ui/ui-test-junit4/src/androidAndroidTest/kotlin/androidx/compose/ui/test/junit4/FirstDrawTest.kt
A compose/ui/ui-test-junit4/src/androidAndroidTest/kotlin/androidx/compose/ui/test/junit4/LateActivityLaunchTest.kt
M compose/ui/ui-test-junit4/src/androidMain/kotlin/androidx/compose/ui/test/junit4/AndroidComposeTestRule.kt
M compose/ui/ui-test-junit4/src/androidMain/kotlin/androidx/compose/ui/test/junit4/StateRestorationTester.kt
M compose/ui/ui-test-junit4/src/desktopMain/kotlin/androidx/compose/ui/test/junit4/DesktopComposeTestRule.kt
M compose/ui/ui-test-junit4/src/jvmMain/kotlin/androidx/compose/ui/test/junit4/ComposeTestRule.kt
M compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/FocusTestUtils.kt
Description
Jetpack Compose release version: Snapshot 6995125 Android Studio Build: n/a
See update to Alpha08 in Crane:https://github.com/android/compose-samples/pull/298/files#diff-b10b1fb51606b96175c832427089cc3f024a536153eab5cdbb95e4a7bb273b7cR60-R74
The
AndroidComposeTestRule
class has been changed in Alpha08, and it now needs anactivityProvider
parameter. That requires quite some boilerplate, asActivityScenarioRule.getActivity()
is private (AndroidComposeTestRule.kt line 311), and so the consumer has to copy that implementation.