Lukáš Kúšik
10/04/2024, 9:02 AMBoxWithConstraints
or a hack with RemoteViews that would expose a measurement.Nizam
10/15/2024, 9:03 AMoverride val sizeMode: SizeMode
get() = SizeMode.Exact
val size = LocalSize.current // Get the available size for the widget
val (widgetWidth, widgetHeight) = remember(size) {
size.width to size.height
}
Now that i know the widget's total height and width, i calculate scale factor of my design. i pass this scalefactor to my composable which will multiply everything from font to button to padding.
val widgetDesignWidth = 140.dp + padding * 2
val widgetDesignHeight = 140.dp + padding * 2
val (scaleFactor, scaleFactorByWidth, scaleFactorByHeight) = calculateScaleFactor(
widgetDesignWidth,
widgetDesignHeight,
)
@Composable
fun calculateScaleFactor(
widgetDesignWidth: Dp,
widgetDesignHeight: Dp,
): Triple<Float, Float, Float> {
val size = LocalSize.current // Get the available size for the widget
val widgetWidth = size.width
val widgetHeight = size.height
val scaleFactorByWidth = (widgetWidth / widgetDesignWidth)
val scaleFactorByHeight = (widgetHeight / widgetDesignHeight)
Log.d(
"UsageWidgetContentDisplay",
"widgetDesignWidth: $widgetDesignWidth widgetDesignHeight: $widgetDesignHeight scaleFactorByWidth: $scaleFactorByWidth scaleFactorByHeight: $scaleFactorByHeight",
)
return Triple(
minOf(scaleFactorByWidth, scaleFactorByHeight),
scaleFactorByWidth,
scaleFactorByHeight,
)
}
Lukáš Kúšik
10/15/2024, 9:04 AMLukáš Kúšik
10/15/2024, 9:06 AM