4

Android 10 のリリースにより、ダーク モードが切り替えられると、いくつかのウィジェット (Gmail、Google ニュース、Samsung メール) のテーマが更新されるようになりました。私はその振る舞いを再現しようとしています。AppWidgetProvider と RemoteViewsFactory を備えたリストビュー ウィジェットがあります。ただし、ダーク モードが切り替えられると、ListView アイテムはダーク テーマに切り替わりますが、レイアウト自体には切り替わりません。

ダークモードオフ:

ダークモードオフ

ダークモードオン:

ダークモードオン

私のコードでは、AppWidgetProvider の OnUpdate() メソッドでレイアウトを設定しています。

    override fun onUpdate(
    context: Context,
    appWidgetManager: AppWidgetManager?,
    appWidgetIds: IntArray?
) {

    Log.d(TAG, "Updating Transaction Widget")

    GlobalScope.launch(Dispatchers.IO ) {
        updateTransactionTable(context)
        for (i in appWidgetIds!!.indices) {
            val layout: RemoteViews = buildLayout(context, appWidgetIds[i])
            appWidgetManager!!.updateAppWidget(appWidgetIds[i], layout)
        }
        super.onUpdate(context, appWidgetManager, appWidgetIds)
    }
}

ダークモードが切り替えられたとき、onUpdate は呼び出されません。ただし、ダーク モードが切り替えられたときに AppWidgetProvider 内で呼び出されるメソッドが見つからないように見えるため、新しいレイアウト ビルドを呼び出す場所や、変更が必要な場合を検出する方法さえわかりません。

どんな助けでも大歓迎です。

4

0 に答える 0