diff --git a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt index 3824bf8dd..688fe71bf 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt @@ -1,6 +1,7 @@ package org.oxycblt.auxio.widgets import android.annotation.SuppressLint +import android.appwidget.AppWidgetHostView import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetProvider import android.content.ComponentName @@ -129,13 +130,20 @@ class WidgetProvider : AppWidgetProvider() { height = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT) } - // Widget dimens pre-12 are weird. Basically, they correspond to columns - // but with 2 columns worth of DiP added for some insane reason. Take - // the dimens, normalize them into cells, and then turn them back into dimens. - // This may result in wonky layouts, but it *seems* to work well enough - // in practice. - width = normalizeDimen(width) - height = normalizeDimen(height) + // Most of the major launchers seem to provide widget sizes that don't include + // padding. Re-add the padding to the width/height and then use that. + val padding = AppWidgetHostView.getDefaultPaddingForWidget( + context, + ComponentName(context, WidgetProvider::class.java), + null + ) + + val density = context.resources.displayMetrics.density + val paddingX = ((padding.left + padding.right) / density).toInt() + val paddingY = ((padding.top + padding.bottom) / density).toInt() + + width += paddingX + height += paddingY logD("Assuming true widget dimens are ${width}x$height") @@ -179,6 +187,7 @@ class WidgetProvider : AppWidgetProvider() { cells++ } + // Change the (cells - X) value depending on your widget's minimum cells return 70 * (cells - 2) - 30 } diff --git a/app/src/main/res/values/styles_ui.xml b/app/src/main/res/values/styles_ui.xml index 2bda9a893..4f41631f0 100644 --- a/app/src/main/res/values/styles_ui.xml +++ b/app/src/main/res/values/styles_ui.xml @@ -220,15 +220,11 @@ 0dp - + \ No newline at end of file diff --git a/app/src/main/res/xml-v31/widget_minimal.xml b/app/src/main/res/xml-v31/widget_minimal.xml index cd05a9984..76612407c 100644 --- a/app/src/main/res/xml-v31/widget_minimal.xml +++ b/app/src/main/res/xml-v31/widget_minimal.xml @@ -2,7 +2,7 @@