Status Update
Comments
ma...@google.com <ma...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
Author: Louis Pullen-Freilich <
Link:
Adds OverscrollEffect#withoutDrawing and OverscrollEffect#withoutEventHandling
Expand for full commit details
Adds OverscrollEffect#withoutDrawing and OverscrollEffect#withoutEventHandling
These APIs allow overscroll to have events dispatched to it by one component, and rendered in a separate component.
Fixes: b/266550551
Fixes: b/204650733
Fixes: b/255554340
Fixes: b/229537244
Test: OverscrollTest
Relnote: "Adds OverscrollEffect#withoutDrawing and OverscrollEffect#withoutEventHandling APIs - these APIs create a wrapped instance of the provided overscroll effect that doesn't draw / handle events respectively, which allows for rendering overscroll in a separate component from the component that is dispatching events. For example, disabling drawing the overscroll inside a lazy list, and then drawing the overscroll separately on top / elsewhere."
Change-Id: Idbb3d91546b49c1987a041f959bce4b2b09a9f61
Files:
- M
compose/foundation/foundation/api/current.txt
- M
compose/foundation/foundation/api/restricted_current.txt
- M
compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/OverscrollDemo.kt
- M
compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/OverscrollSample.kt
- M
compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/OverscrollTest.kt
- M
compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Overscroll.kt
Hash: f64e25b7a473c757d080521e7dd97b3f6670f60d
Date: Fri Nov 01 18:43:56 2024
sg...@google.com <sg...@google.com>
ap...@google.com <ap...@google.com> #3
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.compose.foundation:foundation:1.8.0-alpha06
androidx.compose.foundation:foundation-android:1.8.0-alpha06
androidx.compose.foundation:foundation-jvmstubs:1.8.0-alpha06
androidx.compose.foundation:foundation-linuxx64stubs:1.8.0-alpha06
sg...@google.com <sg...@google.com> #4
Fixed. Please read the commit details for some "gotchas" when applying the Locale just on the picker's state.
The state's locale will only affect the inner parts of the picker, but not the strings that are displayed at the headline placeholder strings, or title.
To force everything into a non-default Locale, you can do something like this:
val preferredLocales = LocaleList.forLanguageTags("hr")
val config = Configuration()
config.setLocales(preferredLocales)
val newContext = LocalContext.current.createConfigurationContext(config)
CompositionLocalProvider(
LocalContext provides newContext,
LocalConfiguration provides config
) {
DatePicker(state = rememberDatePickerState())
}
na...@google.com <na...@google.com> #5
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.compose.material3:material3:1.4.0-alpha02
androidx.compose.material3:material3-android:1.4.0-alpha02
androidx.compose.material3:material3-jvmstubs:1.4.0-alpha02
androidx.compose.material3:material3-linuxx64stubs:1.4.0-alpha02
Description
Environment
Description
The DatePicker component in Jetpack Compose Material 3 does not respect the locale setting provided through DatePickerState. Despite explicitly setting a locale (e.g., Locale("hr", "HR")), the DatePicker continues to use the system's default locale as determined by LocalConfiguration.current.locales[0]. The specified locale is installed on the device.
Expected Behavior
When a locale is explicitly set in DatePickerState, the DatePicker UI should adapt to use this locale for localizing labels, captions, titles, etc. If the specified locale is not installed on the device, it should fall back to using LocalConfiguration.current.locales[0].
Current Behavior
The DatePicker ignores the explicitly set locale in DatePickerState and always uses the system's default locale. This results in the UI not being localized according to the specified locale, affecting user experience for non-default language users.
Steps to Reproduce
Code sample
Probable Cause
The DatePicker implementation seems to ignore the locale parameter in DatePickerState, defaulting to the system's default locale. This is evident in the construction of the calendarModel within the DatePicker, where defaultLocale() is always used regardless of the locale specified in the state.
Suggested Fix
Modify the DatePicker implementation to respect the locale provided in DatePickerState when creating the calendarModel, ensuring that UI elements are correctly localized.
Additional Information
While the recommended approach for managing DatePickerState is through rememberDatePickerState, it does not allow for explicit localization settings via the locale parameter. This limitation becomes apparent in use cases requiring specific locale settings that differ from the system default. Although it's possible to manually implement a rememberSaveable solution that includes the locale, providing a first-class support or clearer guidance for such scenarios within the Compose framework would enhance its usability and flexibility for developers facing similar localization requirements.