Explicitely set widget size constraints
Some widgets are invisible (0px x 0px) if no size is given
This commit is contained in:
parent
3aa28671a4
commit
b40f96d7b5
@ -6,10 +6,14 @@ import android.appwidget.AppWidgetHostView
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.appwidget.AppWidgetProviderInfo
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ListView
|
||||
import android.widget.ScrollView
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.doOnLayout
|
||||
import androidx.core.view.doOnNextLayout
|
||||
import androidx.core.view.get
|
||||
import androidx.core.view.iterator
|
||||
import de.mm20.launcher2.ktx.dp
|
||||
@ -24,10 +28,12 @@ class ExternalWidget(
|
||||
|
||||
val widgetInfo: AppWidgetProviderInfo?
|
||||
|
||||
val widgetView: View
|
||||
|
||||
init {
|
||||
val id = widget.data.toInt()
|
||||
widgetInfo = AppWidgetManager.getInstance(context.applicationContext).getAppWidgetInfo(id)
|
||||
val widgetView = host.createView(context.applicationContext, id, widgetInfo)
|
||||
widgetView = host.createView(context.applicationContext, id, widgetInfo)
|
||||
?: View(context)
|
||||
if (widgetView is AppWidgetHostView && widgetView.childCount > 0) {
|
||||
enableNestedScroll(widgetView[0])
|
||||
@ -40,6 +46,18 @@ class ExternalWidget(
|
||||
addView(widgetView)
|
||||
}
|
||||
|
||||
override fun setLayoutParams(params: ViewGroup.LayoutParams?) {
|
||||
super.setLayoutParams(params)
|
||||
params ?: return
|
||||
doOnNextLayout {
|
||||
val width = if (params.width > 0) params.width else it.width
|
||||
val height = if (params.height > 0) params.height else widgetInfo?.minHeight ?: it.height
|
||||
if (widgetView is AppWidgetHostView) {
|
||||
widgetView.updateAppWidgetSize(Bundle(), 0, 0, width, height)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun enableNestedScroll(view: View) {
|
||||
if (view is ViewGroup) {
|
||||
for (child in view.iterator()) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user