Open Heus-Sueh opened 7 months ago
Broadly speaking, I agree that we should try to keep up to date with current design preferences on the Android platform.
In terms of how we would go about adopting Material3... I'm not entirely sure what that involves. Based on the migration guide that you've linked, it's not clear to me that we're even using Material2 at present - we're only using 1 widget in the androidx
namespace (SwipeRefreshLayout
), and that widget isn't in the material
sub-namespace. I don't know if a material3 backend would effectively be an entirely different Toga backend, or if we can adopt or transition to Material3 in the current Android backend.
If Material 3 is based on Jetpack Compose, which appears to be the case, then that would have to be a completely separate backend.
If Material 3 is based on Jetpack Compose, which appears to be the case, then that would have to be a completely separate backend.
That would take a lot of effort, right?
Yes, it could share some of the low-level parts of the existing Android backend, but the widgets themselves would be quite different, and the layout system too.
Yes, it could share some of the low-level parts of the existing Android backend, but the widgets themselves would be quite different, and the layout system too.
Do you think it's worth the effort to try to do this migration or is it not a priority right now?
It is unlikely to be a priority for the core team any time soon.
However, if you are motivated to try your hand at a migration, I'd encourage you to try.
An update on Material3 support - We've had to introduce Material3 in order to add the OptionContainer widget in #2350. Based on that experience, we don't need to move to Jetpack Compose; "Material Design Components for Android" exist that work in the existing layout structure.
On that basis, once #2350 lands, it should be possible to migrate on a widget-by-widget basis, and get the "new" look and feel of any widgets by changing the underlying widget (e.g., using com.google.android.material.button.MaterialButton
instead of android.widgets.Button
), adapting any to any API changes, and updating the widget probe to accomodate any behavioural/appearance changes.
I haven't yet released anything based on beeware, for exactly this reason: The widgets look dated, acceptance isn't good.
That said: Moving to "state of play" status regarding current design like MD3 would be WONDERFUL (caps intended!)
PS: Thanks for all your efforts, this is a great project!
What is the problem or limitation you are having?
The version of Material Design used now is quite old and dated despite being usable
Describe the solution you'd like
Material3 is much more beautiful and modern
https://developer.android.com/jetpack/compose/designsystems/material2-material3
Describe alternatives you've considered
None
Additional context
It would be really cool to be able to create Material3 apps using the simplicity of Python