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.AppWidgetManager
|
||||||
import android.appwidget.AppWidgetProviderInfo
|
import android.appwidget.AppWidgetProviderInfo
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ListView
|
import android.widget.ListView
|
||||||
import android.widget.ScrollView
|
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.get
|
||||||
import androidx.core.view.iterator
|
import androidx.core.view.iterator
|
||||||
import de.mm20.launcher2.ktx.dp
|
import de.mm20.launcher2.ktx.dp
|
||||||
@ -24,10 +28,12 @@ class ExternalWidget(
|
|||||||
|
|
||||||
val widgetInfo: AppWidgetProviderInfo?
|
val widgetInfo: AppWidgetProviderInfo?
|
||||||
|
|
||||||
|
val widgetView: View
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val id = widget.data.toInt()
|
val id = widget.data.toInt()
|
||||||
widgetInfo = AppWidgetManager.getInstance(context.applicationContext).getAppWidgetInfo(id)
|
widgetInfo = AppWidgetManager.getInstance(context.applicationContext).getAppWidgetInfo(id)
|
||||||
val widgetView = host.createView(context.applicationContext, id, widgetInfo)
|
widgetView = host.createView(context.applicationContext, id, widgetInfo)
|
||||||
?: View(context)
|
?: View(context)
|
||||||
if (widgetView is AppWidgetHostView && widgetView.childCount > 0) {
|
if (widgetView is AppWidgetHostView && widgetView.childCount > 0) {
|
||||||
enableNestedScroll(widgetView[0])
|
enableNestedScroll(widgetView[0])
|
||||||
@ -40,6 +46,18 @@ class ExternalWidget(
|
|||||||
addView(widgetView)
|
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) {
|
private fun enableNestedScroll(view: View) {
|
||||||
if (view is ViewGroup) {
|
if (view is ViewGroup) {
|
||||||
for (child in view.iterator()) {
|
for (child in view.iterator()) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user