Widget picker: generated previews on Android 15+, XML mock-ups redrawn to match the widgets

This commit is contained in:
2026-10-26 20:08:18 +01:00
parent a08ad15c4a
commit 3f81bb9ea5
31 changed files with 2071 additions and 273 deletions
@@ -10,6 +10,7 @@ import de.jeanlucmakiola.calendula.data.contacts.SpecialDatesScheduler
import de.jeanlucmakiola.calendula.data.contacts.SpecialDatesSyncWorker
import de.jeanlucmakiola.calendula.data.reminders.ReminderMaintenanceScheduler
import de.jeanlucmakiola.calendula.data.reminders.ReminderMaintenanceWorker
import de.jeanlucmakiola.calendula.widget.publishCalendulaWidgetPreviews
import de.jeanlucmakiola.calendula.widget.syncWidgetRollover
import de.jeanlucmakiola.calendula.widget.widgetEntryPoint
import de.jeanlucmakiola.floret.crash.CrashConfig
@@ -58,10 +59,12 @@ class CalendulaApp : Application() {
* (#228). Idempotent, and it covers what no broadcast reaches — an alarm
* dropped by a force-stop is armed again the next time the app is opened.
* Off the main thread: a handful of binder calls on every process start.
* The picker previews are republished here too, once per update.
*/
private fun reconcileWidgetRollover() {
CoroutineScope(SupervisorJob() + Dispatchers.Default).launch {
syncWidgetRollover(this@CalendulaApp)
publishCalendulaWidgetPreviews(this@CalendulaApp)
}
}
@@ -0,0 +1,177 @@
package de.jeanlucmakiola.calendula.widget
import android.content.Context
import androidx.glance.appwidget.GlanceAppWidget
import androidx.glance.appwidget.SizeMode
import androidx.glance.appwidget.provideContent
import de.jeanlucmakiola.calendula.R
import de.jeanlucmakiola.calendula.data.prefs.is24Hour
import de.jeanlucmakiola.calendula.data.prefs.resolveFirstDay
import de.jeanlucmakiola.calendula.domain.EventInstance
import de.jeanlucmakiola.calendula.ui.agenda.groupAgendaDays
import de.jeanlucmakiola.calendula.widget.agenda.AgendaWidgetContent
import de.jeanlucmakiola.calendula.widget.agenda.AgendaWidgetReceiver
import de.jeanlucmakiola.calendula.widget.countdown.CountdownData
import de.jeanlucmakiola.calendula.widget.countdown.CountdownOptions
import de.jeanlucmakiola.calendula.widget.countdown.CountdownWidgetContent
import de.jeanlucmakiola.calendula.widget.countdown.CountdownWidgetReceiver
import de.jeanlucmakiola.calendula.widget.date.DateWidgetContent
import de.jeanlucmakiola.calendula.widget.date.DateWidgetReceiver
import de.jeanlucmakiola.calendula.widget.month.MonthWidgetContent
import de.jeanlucmakiola.calendula.widget.month.MonthWidgetReceiver
import de.jeanlucmakiola.calendula.widget.quickadd.QuickAddWidgetContent
import de.jeanlucmakiola.calendula.widget.quickadd.QuickAddWidgetReceiver
import de.jeanlucmakiola.calendula.widget.split.MonthDayData
import de.jeanlucmakiola.calendula.widget.split.MonthDayWidgetContent
import de.jeanlucmakiola.calendula.widget.split.MonthDayWidgetReceiver
import de.jeanlucmakiola.calendula.widget.today.TodayWidgetContent
import de.jeanlucmakiola.calendula.widget.today.TodayWidgetReceiver
import de.jeanlucmakiola.calendula.widget.upcoming.UpcomingWidgetContent
import de.jeanlucmakiola.calendula.widget.upcoming.UpcomingWidgetReceiver
import de.jeanlucmakiola.calendula.widget.week.WeekStripWidgetContent
import de.jeanlucmakiola.calendula.widget.week.WeekStripWidgetReceiver
import de.jeanlucmakiola.floret.glance.publishWidgetPreviews
import kotlinx.coroutines.flow.first
import kotlinx.datetime.DateTimeUnit
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalTime
import kotlinx.datetime.TimeZone
import kotlinx.datetime.atStartOfDayIn
import kotlinx.datetime.atTime
import kotlinx.datetime.plus
import kotlinx.datetime.toInstant
import java.util.Locale
import kotlin.time.Duration.Companion.hours
import kotlin.time.Duration.Companion.minutes
/** Republishes the generated picker previews (Android 15+) after an app update or a language change. */
internal suspend fun publishCalendulaWidgetPreviews(context: Context) {
publishWidgetPreviews(
context,
version = "${context.packageManager.getPackageInfo(context.packageName, 0).lastUpdateTime}-${Locale.getDefault().toLanguageTag()}",
receivers = listOf(
AgendaWidgetReceiver::class,
MonthWidgetReceiver::class,
QuickAddWidgetReceiver::class,
DateWidgetReceiver::class,
WeekStripWidgetReceiver::class,
UpcomingWidgetReceiver::class,
TodayWidgetReceiver::class,
CountdownWidgetReceiver::class,
MonthDayWidgetReceiver::class,
),
)
}
/** The size [kind]'s picker preview is laid out at. */
internal fun previewSizeOf(kind: WidgetKind) = SizeMode.Responsive(setOf(kind.defaultSize))
/** [kind]'s picker preview: the real widget, drawn with sample events around today's morning. */
internal suspend fun GlanceAppWidget.provideSamplePreview(context: Context, kind: WidgetKind) {
val settings = context.widgetEntryPoint().settingsPrefs().widgetSettings.first()
val zone = systemZone()
val today = today(zone)
val now = today.atTime(8, 0).toInstant(zone)
val instances = context.sampleInstances(today, zone)
val weekStart = settings.weekStart.resolveFirstDay(Locale.getDefault())
val is24Hour = settings.timeFormat.is24Hour(android.text.format.DateFormat.is24HourFormat(context))
val options = settings.agendaDefaults
val appearance = WidgetAppearance()
val index = monthIndexOf(today)
val month = MonthWidgetSource.Ready(today, weekStart, settings.soften, instances, index..index)
fun days(range: ClosedRange<LocalDate>) = DaysWidgetData.Ready(
today = today,
firstDay = range.start,
lastDay = range.endInclusive,
days = groupAgendaDays(range.start, range.endInclusive, instances, zone),
weekStart = weekStart,
is24Hour = is24Hour,
soften = settings.soften,
options = options,
now = now,
)
val theme = settings.themeMode
provideContent {
when (kind) {
WidgetKind.AGENDA -> AgendaWidgetContent(
AgendaWidgetData.Ready(
today = today,
days = groupAgendaDays(today, today.plus(6, DateTimeUnit.DAY), instances, zone),
is24Hour = is24Hour,
soften = settings.soften,
pastDisplay = options.pastDisplay,
showToday = options.showToday,
textSize = options.textSize,
now = now,
),
appearance,
theme,
preview = true,
)
WidgetKind.MONTH -> MonthWidgetContent(month, index, appearance, theme)
WidgetKind.MONTH_DAY -> MonthDayWidgetContent(
MonthDayData.Ready(month, options, is24Hour, now),
index,
selected = null,
appearance = appearance,
appTheme = theme,
preview = true,
)
WidgetKind.QUICK_ADD -> QuickAddWidgetContent(today, appearance, theme)
WidgetKind.DATE -> DateWidgetContent(today, appearance, theme)
WidgetKind.WEEK_STRIP -> WeekStripWidgetContent(days(weekOf(today, weekStart)), appearance, theme)
WidgetKind.UPCOMING -> UpcomingWidgetContent(days(today..today.plus(6, DateTimeUnit.DAY)), appearance, theme)
WidgetKind.TODAY -> TodayWidgetContent(days(today..today.plus(1, DateTimeUnit.DAY)), appearance, theme, preview = true)
WidgetKind.COUNTDOWN -> CountdownWidgetContent(
CountdownData.Ready(
options = CountdownOptions(),
event = instances.first { !it.isAllDay && it.start > now },
now = now,
today = today,
is24Hour = is24Hour,
soften = settings.soften,
appWidgetId = null,
),
appearance,
theme,
)
}
}
}
/** A plausible few weeks: a busy today, a trip tomorrow, and a scatter of days with something on. */
private fun Context.sampleInstances(today: LocalDate, zone: TimeZone): List<EventInstance> {
var id = 0L
fun timed(day: Int, at: LocalTime, length: kotlin.time.Duration, title: Int, color: Int): EventInstance {
val start = today.plus(day, DateTimeUnit.DAY).atTime(at).toInstant(zone)
id++
return EventInstance(id, id, 1, getString(title), start, start + length, false, color, null)
}
fun allDay(day: Int, title: Int, color: Int): EventInstance {
val date = today.plus(day, DateTimeUnit.DAY)
id++
return EventInstance(
id, id, 1, getString(title),
date.atStartOfDayIn(TimeZone.UTC), date.plus(1, DateTimeUnit.DAY).atStartOfDayIn(TimeZone.UTC),
true, color, null,
)
}
return listOf(
timed(0, LocalTime(9, 30), 30.minutes, R.string.settings_past_events_sample_morning, Blue),
timed(0, LocalTime(12, 30), 1.hours, R.string.settings_past_events_sample_midday, Green),
timed(0, LocalTime(19, 0), 2.hours, R.string.settings_past_events_sample_evening, Purple),
allDay(1, R.string.widget_preview_sample_trip, Orange),
timed(2, LocalTime(10, 0), 1.hours, R.string.widget_preview_sample_dentist, Red),
timed(-6, LocalTime(9, 30), 30.minutes, R.string.settings_past_events_sample_morning, Blue),
timed(-2, LocalTime(19, 0), 2.hours, R.string.settings_past_events_sample_evening, Purple),
timed(5, LocalTime(19, 0), 2.hours, R.string.settings_past_events_sample_evening, Purple),
timed(8, LocalTime(9, 30), 30.minutes, R.string.settings_past_events_sample_morning, Blue),
timed(12, LocalTime(12, 30), 1.hours, R.string.settings_past_events_sample_midday, Green),
).sortedBy { it.start }
}
private const val Blue = 0xFF039BE5.toInt()
private const val Green = 0xFF33B679.toInt()
private const val Purple = 0xFF8E24AA.toInt()
private const val Orange = 0xFFF4511E.toInt()
private const val Red = 0xFFD50000.toInt()
@@ -1,5 +1,8 @@
package de.jeanlucmakiola.calendula.widget.agenda
import de.jeanlucmakiola.calendula.widget.WidgetKind
import de.jeanlucmakiola.calendula.widget.previewSizeOf
import de.jeanlucmakiola.calendula.widget.provideSamplePreview
import de.jeanlucmakiola.calendula.domain.isDeclined
import de.jeanlucmakiola.calendula.widget.glanceDeclinedDecoration
import android.content.Context
@@ -95,6 +98,11 @@ class AgendaWidget : GlanceAppWidget() {
// the RemoteViews past the binder transaction limit.
override val sizeMode = SizeMode.Single
override val previewSizeMode = previewSizeOf(WidgetKind.AGENDA)
override suspend fun providePreview(context: Context, widgetCategory: Int) =
provideSamplePreview(context, WidgetKind.AGENDA)
override suspend fun provideGlance(context: Context, id: GlanceId) {
val stamp = refreshStamp(context, id)
val widgetData = WidgetData(context.loadAgendaWidget(id), stamp)
@@ -1,5 +1,8 @@
package de.jeanlucmakiola.calendula.widget.countdown
import de.jeanlucmakiola.calendula.widget.WidgetKind
import de.jeanlucmakiola.calendula.widget.previewSizeOf
import de.jeanlucmakiola.calendula.widget.provideSamplePreview
import android.appwidget.AppWidgetManager
import android.content.Context
import android.content.res.Resources
@@ -70,6 +73,11 @@ class CountdownWidget : GlanceAppWidget() {
override val sizeMode = SizeMode.Single
override val previewSizeMode = previewSizeOf(WidgetKind.COUNTDOWN)
override suspend fun providePreview(context: Context, widgetCategory: Int) =
provideSamplePreview(context, WidgetKind.COUNTDOWN)
override suspend fun provideGlance(context: Context, id: GlanceId) {
val widgetData = WidgetData(context.loadPlacedCountdown(id), refreshStamp(context, id))
provideContent {
@@ -1,5 +1,8 @@
package de.jeanlucmakiola.calendula.widget.date
import de.jeanlucmakiola.calendula.widget.WidgetKind
import de.jeanlucmakiola.calendula.widget.previewSizeOf
import de.jeanlucmakiola.calendula.widget.provideSamplePreview
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.unit.dp
@@ -59,6 +62,11 @@ class DateWidget : GlanceAppWidget() {
override val sizeMode = SizeMode.Exact
override val previewSizeMode = previewSizeOf(WidgetKind.DATE)
override suspend fun providePreview(context: Context, widgetCategory: Int) =
provideSamplePreview(context, WidgetKind.DATE)
override suspend fun provideGlance(context: Context, id: GlanceId) {
val widgetData = WidgetData(context.loadToday(), refreshStamp(context, id))
provideContent {
@@ -1,5 +1,8 @@
package de.jeanlucmakiola.calendula.widget.month
import de.jeanlucmakiola.calendula.widget.WidgetKind
import de.jeanlucmakiola.calendula.widget.previewSizeOf
import de.jeanlucmakiola.calendula.widget.provideSamplePreview
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect
@@ -43,7 +46,6 @@ import androidx.glance.layout.fillMaxWidth
import androidx.glance.layout.height
import androidx.glance.layout.padding
import androidx.glance.layout.size
import androidx.glance.layout.width
import androidx.glance.state.PreferencesGlanceStateDefinition
import de.jeanlucmakiola.floret.glance.LocalWidgetThemeMode
import de.jeanlucmakiola.floret.glance.WidgetColorRole
@@ -136,6 +138,11 @@ class MonthWidget : GlanceAppWidget() {
*/
override val sizeMode = SizeMode.Exact
override val previewSizeMode = previewSizeOf(WidgetKind.MONTH)
override suspend fun providePreview(context: Context, widgetCategory: Int) =
provideSamplePreview(context, WidgetKind.MONTH)
override suspend fun provideGlance(context: Context, id: GlanceId) {
val shown = getAppWidgetState<Preferences>(context, id)[MONTH_INDEX_KEY]
?: currentMonthIndex(systemZone())
@@ -239,8 +246,6 @@ private fun MonthWidgetBody(source: MonthWidgetSource, index: Int) {
is MonthWidgetSource.Ready -> {
val zone = systemZone()
val ym = yearMonthOf(index)
// Column width from the live widget size, minus our H padding.
val colW = (LocalSize.current.width - GRID_HPADDING * 2) / 7
val weeks = layoutMonthWeeks(ym, source.weekStart, source.instances, zone)
val context = LocalContext.current
val fontScale = context.resources.configuration.fontScale
@@ -261,7 +266,7 @@ private fun MonthWidgetBody(source: MonthWidgetSource, index: Int) {
// each carry their own fill, so a transparent widget stays
// readable without one blob over the wallpaper (#292).
Column(modifier = GlanceModifier.fillMaxWidth().defaultWeight()) {
WeekdayHeader(weekStart = source.weekStart, colW = colW)
WeekdayHeader(weekStart = source.weekStart)
AndroidRemoteViews(
remoteViews = monthGridViews(context, layouts, ym.month, source.today, source.soften, colors, mode),
modifier = GlanceModifier.fillMaxWidth().defaultWeight(),
@@ -315,10 +320,10 @@ private fun MonthHeader(label: String, today: LocalDate) {
}
@Composable
private fun WeekdayHeader(weekStart: DayOfWeek, colW: Dp) {
private fun WeekdayHeader(weekStart: DayOfWeek) {
Row(modifier = GlanceModifier.fillMaxWidth().padding(bottom = 1.dp)) {
weekdayNarrowNames(weekStart).forEach { name ->
Box(modifier = GlanceModifier.width(colW).padding(horizontal = 1.dp)) {
Box(modifier = GlanceModifier.defaultWeight().padding(horizontal = 1.dp)) {
Text(
text = name,
style = TextStyle(
@@ -1,5 +1,8 @@
package de.jeanlucmakiola.calendula.widget.quickadd
import de.jeanlucmakiola.calendula.widget.WidgetKind
import de.jeanlucmakiola.calendula.widget.previewSizeOf
import de.jeanlucmakiola.calendula.widget.provideSamplePreview
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.unit.dp
@@ -46,6 +49,11 @@ class QuickAddWidget : GlanceAppWidget() {
// Exact: the shape fills whatever square the launcher gives it.
override val sizeMode = SizeMode.Exact
override val previewSizeMode = previewSizeOf(WidgetKind.QUICK_ADD)
override suspend fun providePreview(context: Context, widgetCategory: Int) =
provideSamplePreview(context, WidgetKind.QUICK_ADD)
override suspend fun provideGlance(context: Context, id: GlanceId) {
val widgetData = WidgetData(context.loadToday(), refreshStamp(context, id))
provideContent {
@@ -1,5 +1,8 @@
package de.jeanlucmakiola.calendula.widget.split
import de.jeanlucmakiola.calendula.widget.WidgetKind
import de.jeanlucmakiola.calendula.widget.previewSizeOf
import de.jeanlucmakiola.calendula.widget.provideSamplePreview
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
@@ -146,6 +149,11 @@ class MonthDayWidget : GlanceAppWidget() {
override val sizeMode = SizeMode.Exact
override val previewSizeMode = previewSizeOf(WidgetKind.MONTH_DAY)
override suspend fun providePreview(context: Context, widgetCategory: Int) =
provideSamplePreview(context, WidgetKind.MONTH_DAY)
override suspend fun provideGlance(context: Context, id: GlanceId) {
val stamp = refreshStamp(context, id)
val shown = context.widgetState(id)[MONTH_INDEX_KEY] ?: monthIndexOf(today(systemZone()))
@@ -1,5 +1,8 @@
package de.jeanlucmakiola.calendula.widget.today
import de.jeanlucmakiola.calendula.widget.WidgetKind
import de.jeanlucmakiola.calendula.widget.previewSizeOf
import de.jeanlucmakiola.calendula.widget.provideSamplePreview
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.unit.dp
@@ -87,6 +90,11 @@ class TodayWidget : GlanceAppWidget() {
// Exact: whether one or two of tomorrow's events fit follows the height.
override val sizeMode = SizeMode.Exact
override val previewSizeMode = previewSizeOf(WidgetKind.TODAY)
override suspend fun providePreview(context: Context, widgetCategory: Int) =
provideSamplePreview(context, WidgetKind.TODAY)
override suspend fun provideGlance(context: Context, id: GlanceId) {
val widgetData = WidgetData(context.loadTodayList(context.widgetLoadContext(id)), refreshStamp(context, id))
provideContent {
@@ -165,7 +173,8 @@ private fun TodayList(events: List<EventInstance>, data: DaysWidgetData.Ready, m
)
}
if (preview) {
Column(modifier = GlanceModifier.fillMaxSize()) { repeat(minOf(events.size, 10)) { row(it) } }
val fits = ((LocalSize.current.height - 12.dp + RowGap) / (metrics.rowHeight + RowGap)).toInt().coerceAtLeast(1)
Column(modifier = GlanceModifier.fillMaxSize()) { repeat(minOf(events.size, fits)) { row(it) } }
} else {
LazyColumn(modifier = GlanceModifier.fillMaxSize()) { items(events.size) { row(it) } }
}
@@ -1,5 +1,8 @@
package de.jeanlucmakiola.calendula.widget.upcoming
import de.jeanlucmakiola.calendula.widget.WidgetKind
import de.jeanlucmakiola.calendula.widget.previewSizeOf
import de.jeanlucmakiola.calendula.widget.provideSamplePreview
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.unit.Dp
@@ -77,6 +80,11 @@ class UpcomingWidget : GlanceAppWidget() {
// Exact: how many rows show follows the height.
override val sizeMode = SizeMode.Exact
override val previewSizeMode = previewSizeOf(WidgetKind.UPCOMING)
override suspend fun providePreview(context: Context, widgetCategory: Int) =
provideSamplePreview(context, WidgetKind.UPCOMING)
override suspend fun provideGlance(context: Context, id: GlanceId) {
val widgetData = WidgetData(context.loadUpcoming(context.widgetLoadContext(id)), refreshStamp(context, id))
provideContent {
@@ -1,5 +1,8 @@
package de.jeanlucmakiola.calendula.widget.week
import de.jeanlucmakiola.calendula.widget.WidgetKind
import de.jeanlucmakiola.calendula.widget.previewSizeOf
import de.jeanlucmakiola.calendula.widget.provideSamplePreview
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.unit.dp
@@ -79,6 +82,11 @@ class WeekStripWidget : GlanceAppWidget() {
override val sizeMode = SizeMode.Single
override val previewSizeMode = previewSizeOf(WidgetKind.WEEK_STRIP)
override suspend fun providePreview(context: Context, widgetCategory: Int) =
provideSamplePreview(context, WidgetKind.WEEK_STRIP)
override suspend fun provideGlance(context: Context, id: GlanceId) {
val widgetData = WidgetData(context.loadWeek(id), refreshStamp(context, id))
provideContent {
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#4F7CAC" />
<solid android:color="#FFFFFF" />
<corners android:radius="3dp" />
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/widget_preview_cell" />
<corners android:radius="12dp" />
</shape>
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/widget_preview_row" />
<corners android:radius="10dp" />
<solid android:color="#FFFFFF" />
<corners android:radius="14dp" />
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/widget_preview_outside" />
<corners android:radius="12dp" />
</shape>
+149 -87
View File
@@ -1,124 +1,186 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Static mock shown in the widget picker (android:previewLayout). Not the
runtime layout — the live widget is rendered by Glance. Colours are the
brand light scheme so the picker preview reads on its light sheet. -->
<!-- Static mock shown in the widget picker on Android 14 and below
(android:previewLayout); 15+ shows the generated preview instead. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/preview_widget_bg"
android:padding="14dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/widget_agenda_title"
android:textColor="@color/widget_preview_primary"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/agenda_header_today"
android:textColor="@color/widget_preview_primary"
android:textSize="12sp"
android:textStyle="bold" />
android:orientation="vertical"
android:padding="8dp"
tools:ignore="HardcodedText,NestedWeights,DisableBaselineAlignment,SmallSp,TooManyViews,UselessParent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:layout_width="5dp"
android:layout_height="34dp"
android:contentDescription="@null"
android:background="@drawable/preview_stripe"
android:backgroundTint="#4F7CAC" />
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="1"
android:paddingHorizontal="4dp"
android:text="@string/widget_agenda_title"
android:textColor="@color/widget_preview_primary"
android:textSize="15sp"
android:textStyle="bold" />
<TextView style="@style/WidgetPreviewAddButton" android:text="+" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:orientation="horizontal">
<TextView
android:layout_width="40dp"
android:layout_height="match_parent"
android:background="@drawable/preview_widget_today_bg"
android:gravity="center_horizontal"
android:paddingTop="6dp"
android:text="Mon&#10;26"
android:textColor="@color/widget_preview_on_primary"
android:textSize="13sp"
tools:ignore="HardcodedText" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:orientation="vertical">
android:layout_marginTop="0dp"
android:background="@drawable/preview_widget_event_bg"
android:backgroundTint="@color/widget_preview_event_blue"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:paddingVertical="3dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Standup"
android:textColor="@color/widget_preview_on_surface"
android:textSize="14sp" />
android:ellipsize="end"
android:maxLines="1"
android:text="@string/settings_past_events_sample_morning"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="09:00 – 09:30"
android:textColor="@color/widget_preview_variant"
android:textSize="12sp" />
android:ellipsize="end"
android:maxLines="1"
android:text="9:30 – 10:00"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:background="@drawable/preview_widget_event_bg"
android:backgroundTint="@color/widget_preview_event_green"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:paddingVertical="3dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/settings_past_events_sample_midday"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="12:30 – 13:30"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:background="@drawable/preview_widget_event_bg"
android:backgroundTint="@color/widget_preview_event_purple"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:paddingVertical="3dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/settings_past_events_sample_evening"
android:textColor="@color/widget_preview_on_event_dark"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="19:00 – 21:00"
android:textColor="@color/widget_preview_on_event_dark"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:layout_width="5dp"
android:layout_height="34dp"
android:contentDescription="@null"
android:background="@drawable/preview_stripe"
android:backgroundTint="#6FA37A" />
android:layout_marginTop="6dp"
android:orientation="horizontal">
<TextView
android:layout_width="40dp"
android:layout_height="match_parent"
android:background="@drawable/preview_widget_today_bg"
android:gravity="center_horizontal"
android:paddingTop="6dp"
android:text="Tue&#10;27"
android:textColor="@color/widget_preview_on_primary"
android:textSize="13sp"
tools:ignore="HardcodedText" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:orientation="vertical">
android:layout_marginTop="0dp"
android:background="@drawable/preview_widget_event_bg"
android:backgroundTint="@color/widget_preview_event_orange"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:paddingVertical="3dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Design review"
android:textColor="@color/widget_preview_on_surface"
android:textSize="14sp" />
android:ellipsize="end"
android:maxLines="1"
android:text="@string/widget_preview_sample_trip"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="11:30 – 12:30"
android:textColor="@color/widget_preview_variant"
android:textSize="12sp" />
android:ellipsize="end"
android:maxLines="1"
android:text="@string/event_detail_all_day"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:layout_width="5dp"
android:layout_height="34dp"
android:contentDescription="@null"
android:background="@drawable/preview_stripe"
android:backgroundTint="#C58A56" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="1:1 with Mara"
android:textColor="@color/widget_preview_on_surface"
android:textSize="14sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="14:00 – 14:30"
android:textColor="@color/widget_preview_variant"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
@@ -1,27 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Static mock shown in the widget picker (android:previewLayout). -->
<!-- Static mock shown in the widget picker on Android 14 and below
(android:previewLayout); 15+ shows the generated preview instead. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/preview_widget_bg"
android:gravity="center_vertical"
android:orientation="vertical"
android:paddingHorizontal="14dp"
tools:ignore="HardcodedText">
android:orientation="horizontal"
android:padding="12dp"
tools:ignore="HardcodedText,NestedWeights,DisableBaselineAlignment,SmallSp,TooManyViews,UselessParent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Vacation"
android:textColor="@color/widget_preview_on_surface"
android:textSize="13sp" />
<View
android:layout_width="4dp"
android:layout_height="match_parent"
android:background="@drawable/preview_stripe"
android:backgroundTint="@color/widget_preview_event_blue" />
<TextView
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="in 12 days"
android:textColor="@color/widget_preview_primary"
android:textSize="20sp"
android:textStyle="bold" />
android:layout_marginStart="10dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="@string/settings_past_events_sample_morning"
android:textColor="@color/widget_preview_on_surface"
android:textSize="13sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="in 2 h"
android:textColor="@color/widget_preview_primary"
android:textSize="22sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="9:30"
android:textColor="@color/widget_preview_on_surface"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Static mock shown in the widget picker (android:previewLayout). -->
<!-- Static mock shown in the widget picker on Android 14 and below
(android:previewLayout); 15+ shows the generated preview instead. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
@@ -12,7 +13,7 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="WED"
android:text="MON"
android:textColor="@color/widget_preview_on_surface"
android:textSize="11sp"
android:textStyle="bold"
@@ -34,9 +35,9 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="7"
android:text="26"
android:textColor="@color/widget_preview_on_primary"
android:textSize="22sp"
android:textSize="20sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</FrameLayout>
+746 -84
View File
@@ -1,114 +1,776 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Static mock shown in the widget picker (android:previewLayout). The live
widget is rendered by Glance with real events; this only needs to read as
"a month grid" in the picker. -->
<!-- Static mock shown in the widget picker on Android 14 and below
(android:previewLayout); 15+ shows the generated preview instead. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/preview_widget_bg"
android:padding="12dp">
android:orientation="vertical"
android:padding="8dp"
tools:ignore="HardcodedText,NestedWeights,DisableBaselineAlignment,SmallSp,TooManyViews,UselessParent">
<!-- Header -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="‹"
android:textColor="@color/widget_preview_variant"
android:textSize="16sp" />
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="June 2026"
android:maxLines="1"
android:paddingHorizontal="4dp"
android:text="October"
android:textColor="@color/widget_preview_primary"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="›"
android:textColor="@color/widget_preview_variant"
android:textSize="16sp" />
<TextView style="@style/WidgetPreviewHeaderButton" android:text="‹" />
<TextView style="@style/WidgetPreviewHeaderButton" android:layout_width="28dp" android:text="26" android:textStyle="bold" />
<TextView style="@style/WidgetPreviewHeaderButton" android:text="›" />
<TextView style="@style/WidgetPreviewAddButton" android:text="+" />
</LinearLayout>
<!-- Weekday header -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:layout_marginBottom="1dp"
android:orientation="horizontal">
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="M" android:textColor="@color/widget_preview_variant" android:textSize="11sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="T" android:textColor="@color/widget_preview_variant" android:textSize="11sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="W" android:textColor="@color/widget_preview_variant" android:textSize="11sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="T" android:textColor="@color/widget_preview_variant" android:textSize="11sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="F" android:textColor="@color/widget_preview_variant" android:textSize="11sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="S" android:textColor="@color/widget_preview_variant" android:textSize="11sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="S" android:textColor="@color/widget_preview_variant" android:textSize="11sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center"
android:text="M"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center"
android:text="T"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center"
android:text="W"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center"
android:text="T"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center"
android:text="F"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center"
android:text="S"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center"
android:text="S"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<!-- Week 1: 1..7 (event bar on the 3rd) -->
<LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:layout_marginTop="4dp">
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="1" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="2" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="3" android:textColor="#4F7CAC" android:textStyle="bold" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="4" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="5" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="6" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="7" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
</LinearLayout>
<!-- Week 2: 8..14 (bars on 11,12,13) -->
<LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:layout_marginTop="4dp">
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="8" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="9" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="10" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="11" android:textColor="#6FA37A" android:textStyle="bold" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="12" android:textColor="#6FA37A" android:textStyle="bold" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="13" android:textColor="#6FA37A" android:textStyle="bold" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="14" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
</LinearLayout>
<!-- Week 3: 15..21 (17 = today) -->
<LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:layout_marginTop="4dp">
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="15" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="16" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="horizontal">
<TextView android:layout_width="22dp" android:layout_height="22dp" android:gravity="center"
android:text="17" android:textColor="@color/widget_preview_on_primary" android:textStyle="bold" android:textSize="12sp"
android:background="@drawable/preview_today_circle" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_outside_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="28"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_outside_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="29"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_outside_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="30"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="1"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="2"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="3"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="4"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="18" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="19" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="20" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="21" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
</LinearLayout>
<!-- Week 4: 22..28 (bar on 24) -->
<LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:layout_marginTop="4dp">
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="22" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="23" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="24" android:textColor="#C58A56" android:textStyle="bold" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="25" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="26" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="27" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="28" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="5"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="6"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="7"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="8"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="9"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="10"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="11"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
<!-- Week 5: 29, 30, then trailing July days greyed -->
<LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:layout_marginTop="4dp">
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="29" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="30" android:textColor="@color/widget_preview_on_surface" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="1" android:textColor="@color/widget_preview_variant" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="2" android:textColor="@color/widget_preview_variant" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="3" android:textColor="@color/widget_preview_variant" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="4" android:textColor="@color/widget_preview_variant" android:textSize="12sp" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="5" android:textColor="@color/widget_preview_variant" android:textSize="12sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="12"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="13"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="14"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="15"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="16"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="17"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="18"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="19"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="20"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="2dp"
android:background="@drawable/preview_stripe"
android:backgroundTint="@color/widget_preview_event_blue"
android:ellipsize="end"
android:maxLines="1"
android:paddingHorizontal="2dp"
android:text="@string/settings_past_events_sample_morning"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="8sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="21"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="22"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="23"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="24"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="2dp"
android:background="@drawable/preview_stripe"
android:backgroundTint="@color/widget_preview_event_purple"
android:ellipsize="end"
android:maxLines="1"
android:paddingHorizontal="2dp"
android:text="@string/settings_past_events_sample_evening"
android:textColor="@color/widget_preview_on_event_dark"
android:textSize="8sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="25"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="18dp"
android:layout_height="18dp"
android:background="@drawable/preview_today_circle"
android:gravity="center"
android:text="26"
android:textColor="@color/widget_preview_on_primary"
android:textSize="10sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="2dp"
android:background="@drawable/preview_stripe"
android:backgroundTint="@color/widget_preview_event_blue"
android:ellipsize="end"
android:maxLines="1"
android:paddingHorizontal="2dp"
android:text="@string/settings_past_events_sample_morning"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="8sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="27"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="2dp"
android:background="@drawable/preview_stripe"
android:backgroundTint="@color/widget_preview_event_orange"
android:ellipsize="end"
android:maxLines="1"
android:paddingHorizontal="2dp"
android:text="@string/widget_preview_sample_trip"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="8sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="28"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="2dp"
android:background="@drawable/preview_stripe"
android:backgroundTint="@color/widget_preview_event_red"
android:ellipsize="end"
android:maxLines="1"
android:paddingHorizontal="2dp"
android:text="@string/widget_preview_sample_dentist"
android:textColor="@color/widget_preview_on_event_dark"
android:textSize="8sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="29"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="30"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_cell_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="31"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="2dp"
android:background="@drawable/preview_stripe"
android:backgroundTint="@color/widget_preview_event_purple"
android:ellipsize="end"
android:maxLines="1"
android:paddingHorizontal="2dp"
android:text="@string/settings_past_events_sample_evening"
android:textColor="@color/widget_preview_on_event_dark"
android:textSize="8sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/preview_widget_outside_bg"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="18dp"
android:gravity="center"
android:text="1"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
@@ -1,38 +1,422 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Static mock shown in the widget picker (android:previewLayout). -->
<!-- Static mock shown in the widget picker on Android 14 and below
(android:previewLayout); 15+ shows the generated preview instead. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/preview_widget_bg"
android:orientation="vertical"
android:padding="10dp"
tools:ignore="HardcodedText">
android:padding="8dp"
tools:ignore="HardcodedText,NestedWeights,DisableBaselineAlignment,SmallSp,TooManyViews,UselessParent">
<TextView
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="October"
android:textColor="@color/widget_preview_primary"
android:textSize="15sp"
android:textStyle="bold" />
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="1"
android:paddingHorizontal="4dp"
android:text="October"
android:textColor="@color/widget_preview_primary"
android:textSize="15sp"
android:textStyle="bold" />
<TextView style="@style/WidgetPreviewHeaderButton" android:text="‹" />
<TextView style="@style/WidgetPreviewHeaderButton" android:layout_width="28dp" android:text="26" android:textStyle="bold" />
<TextView style="@style/WidgetPreviewHeaderButton" android:text="›" />
<TextView style="@style/WidgetPreviewAddButton" android:text="+" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:lineSpacingExtra="2dp"
android:text="1 2 3 4 5 6 7\n8 9 10 11 12 13 14\n15 16 17 18 19 20 21\n22 23 24 25 26 27 28"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
android:layout_weight="1.1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="M"
android:textColor="@color/widget_preview_variant"
android:textSize="9sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="T"
android:textColor="@color/widget_preview_variant"
android:textSize="9sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="W"
android:textColor="@color/widget_preview_variant"
android:textSize="9sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="T"
android:textColor="@color/widget_preview_variant"
android:textSize="9sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="F"
android:textColor="@color/widget_preview_variant"
android:textSize="9sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="S"
android:textColor="@color/widget_preview_variant"
android:textSize="9sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="S"
android:textColor="@color/widget_preview_variant"
android:textSize="9sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="28"
android:textColor="@color/widget_preview_variant"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="29"
android:textColor="@color/widget_preview_variant"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="30"
android:textColor="@color/widget_preview_variant"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="1"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="2"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="3"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="4"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="5"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="6"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="7"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="8"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="9"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="10"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="11"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="12"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="13"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="14"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="15"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="16"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="17"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="18"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="19"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="20"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="21"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="22"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="23"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="24"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="25"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/preview_widget_today_bg"
android:gravity="center"
android:text="26"
android:textColor="@color/widget_preview_on_primary"
android:textSize="10sp"
android:textStyle="bold" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="27"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="28"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="29"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="30"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="31"
android:textColor="@color/widget_preview_on_surface"
android:textSize="10sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="1"
android:textColor="@color/widget_preview_variant"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
@@ -40,9 +424,95 @@
android:layout_marginStart="8dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView style="@style/WidgetPreviewEventRow" android:layout_marginTop="0dp" android:text="Stand-up\n9:30" />
<TextView style="@style/WidgetPreviewEventRow" android:text="Lunch\n12:30" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="4dp"
android:text="@string/widget_today"
android:textColor="@color/widget_preview_on_surface"
android:textSize="11sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:background="@drawable/preview_widget_event_bg"
android:backgroundTint="@color/widget_preview_event_blue"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:paddingVertical="3dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/settings_past_events_sample_morning"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="9:30 – 10:00"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:background="@drawable/preview_widget_event_bg"
android:backgroundTint="@color/widget_preview_event_green"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:paddingVertical="3dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/settings_past_events_sample_midday"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="12:30 – 13:30"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:background="@drawable/preview_widget_event_bg"
android:backgroundTint="@color/widget_preview_event_purple"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:paddingVertical="3dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/settings_past_events_sample_evening"
android:textColor="@color/widget_preview_on_event_dark"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="19:00 – 21:00"
android:textColor="@color/widget_preview_on_event_dark"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Static mock shown in the widget picker (android:previewLayout). -->
<!-- Static mock shown in the widget picker on Android 14 and below
(android:previewLayout); 15+ shows the generated preview instead. -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Static mock shown in the widget picker (android:previewLayout). -->
<!-- Static mock shown in the widget picker on Android 14 and below
(android:previewLayout); 15+ shows the generated preview instead. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
@@ -7,14 +8,14 @@
android:background="@drawable/preview_widget_bg"
android:orientation="horizontal"
android:padding="6dp"
tools:ignore="HardcodedText">
tools:ignore="HardcodedText,NestedWeights,DisableBaselineAlignment,SmallSp,TooManyViews,UselessParent">
<TextView
android:layout_width="44dp"
android:layout_height="match_parent"
android:background="@drawable/preview_widget_today_bg"
android:gravity="center"
android:text="Wed\n7"
android:text="Mon&#10;26"
android:textColor="@color/widget_preview_on_primary"
android:textSize="13sp" />
@@ -25,7 +26,59 @@
android:layout_weight="1"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView style="@style/WidgetPreviewEventRow" android:layout_marginTop="0dp" android:text="Stand-up\n9:30 – 9:45" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:background="@drawable/preview_widget_event_bg"
android:backgroundTint="@color/widget_preview_event_blue"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:paddingVertical="3dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/settings_past_events_sample_morning"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="9:30 – 10:00"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:background="@drawable/preview_widget_event_bg"
android:backgroundTint="@color/widget_preview_event_green"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:paddingVertical="3dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/settings_past_events_sample_midday"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="12:30 – 13:30"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
@@ -1,23 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Static mock shown in the widget picker (android:previewLayout). -->
<!-- Static mock shown in the widget picker on Android 14 and below
(android:previewLayout); 15+ shows the generated preview instead. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/preview_widget_bg"
android:orientation="vertical"
android:padding="10dp"
tools:ignore="HardcodedText">
android:padding="8dp"
tools:ignore="HardcodedText,NestedWeights,DisableBaselineAlignment,SmallSp,TooManyViews,UselessParent">
<TextView
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="7 Wednesday"
android:textColor="@color/widget_preview_primary"
android:textSize="16sp"
android:textStyle="bold" />
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingHorizontal="4dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="26"
android:textColor="@color/widget_preview_primary"
android:textSize="28sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="Monday&#10;October"
android:textColor="@color/widget_preview_on_surface"
android:textSize="12sp" />
</LinearLayout>
<TextView style="@style/WidgetPreviewEventRow" android:text="Stand-up\n9:30" />
<TextView style="@style/WidgetPreviewEventRow" android:text="Lunch with Sam\n12:30" />
<TextView style="@style/WidgetPreviewEventRow" android:text="Gym\nTomorrow · 18:00" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:background="@drawable/preview_widget_event_bg"
android:backgroundTint="@color/widget_preview_event_blue"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:paddingVertical="3dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/settings_past_events_sample_morning"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="9:30 – 10:00"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:background="@drawable/preview_widget_event_bg"
android:backgroundTint="@color/widget_preview_event_green"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:paddingVertical="3dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/settings_past_events_sample_midday"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="12:30 – 13:30"
android:textColor="@color/widget_preview_on_event_light"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
@@ -1,24 +1,202 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Static mock shown in the widget picker (android:previewLayout). -->
<!-- Static mock shown in the widget picker on Android 14 and below
(android:previewLayout); 15+ shows the generated preview instead. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/preview_widget_bg"
android:gravity="center"
android:orientation="horizontal"
android:padding="6dp"
tools:ignore="HardcodedText">
tools:ignore="HardcodedText,NestedWeights,DisableBaselineAlignment,SmallSp,TooManyViews,UselessParent">
<TextView style="@style/WidgetPreviewWeekDay" android:text="M\n5" />
<TextView style="@style/WidgetPreviewWeekDay" android:text="T\n6" />
<TextView
<LinearLayout
style="@style/WidgetPreviewWeekDay"
android:background="@drawable/preview_widget_today_bg"
android:text="W\n7"
android:textColor="@color/widget_preview_on_primary" />
<TextView style="@style/WidgetPreviewWeekDay" android:text="T\n8" />
<TextView style="@style/WidgetPreviewWeekDay" android:text="F\n9" />
<TextView style="@style/WidgetPreviewWeekDay" android:text="S\n10" />
<TextView style="@style/WidgetPreviewWeekDay" android:text="S\n11" />
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mon"
android:textColor="@color/widget_preview_on_primary"
android:textSize="11sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="26"
android:textColor="@color/widget_preview_on_primary"
android:textSize="16sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="6dp"
android:gravity="center"
android:orientation="horizontal">
<View
android:layout_width="4dp"
android:layout_height="4dp"
android:layout_marginHorizontal="1dp"
android:background="@drawable/preview_today_circle"
android:backgroundTint="@color/widget_preview_event_blue" />
<View
android:layout_width="4dp"
android:layout_height="4dp"
android:layout_marginHorizontal="1dp"
android:background="@drawable/preview_today_circle"
android:backgroundTint="@color/widget_preview_event_green" />
<View
android:layout_width="4dp"
android:layout_height="4dp"
android:layout_marginHorizontal="1dp"
android:background="@drawable/preview_today_circle"
android:backgroundTint="@color/widget_preview_event_purple" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/WidgetPreviewWeekDay"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tue"
android:textColor="@color/widget_preview_on_surface"
android:textSize="11sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="27"
android:textColor="@color/widget_preview_on_surface"
android:textSize="16sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="6dp"
android:gravity="center"
android:orientation="horizontal">
<View
android:layout_width="4dp"
android:layout_height="4dp"
android:layout_marginHorizontal="1dp"
android:background="@drawable/preview_today_circle"
android:backgroundTint="@color/widget_preview_event_orange" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/WidgetPreviewWeekDay"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Wed"
android:textColor="@color/widget_preview_on_surface"
android:textSize="11sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="28"
android:textColor="@color/widget_preview_on_surface"
android:textSize="16sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="6dp"
android:gravity="center"
android:orientation="horizontal">
<View
android:layout_width="4dp"
android:layout_height="4dp"
android:layout_marginHorizontal="1dp"
android:background="@drawable/preview_today_circle"
android:backgroundTint="@color/widget_preview_event_red" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/WidgetPreviewWeekDay"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Thu"
android:textColor="@color/widget_preview_on_surface"
android:textSize="11sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="29"
android:textColor="@color/widget_preview_on_surface"
android:textSize="16sp"
android:textStyle="bold" />
<Space
android:layout_width="wrap_content"
android:layout_height="6dp" />
</LinearLayout>
<LinearLayout
style="@style/WidgetPreviewWeekDay"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fri"
android:textColor="@color/widget_preview_on_surface"
android:textSize="11sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="30"
android:textColor="@color/widget_preview_on_surface"
android:textSize="16sp"
android:textStyle="bold" />
<Space
android:layout_width="wrap_content"
android:layout_height="6dp" />
</LinearLayout>
<LinearLayout
style="@style/WidgetPreviewWeekDay"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sat"
android:textColor="@color/widget_preview_on_surface"
android:textSize="11sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="31"
android:textColor="@color/widget_preview_on_surface"
android:textSize="16sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="6dp"
android:gravity="center"
android:orientation="horizontal">
<View
android:layout_width="4dp"
android:layout_height="4dp"
android:layout_marginHorizontal="1dp"
android:background="@drawable/preview_today_circle"
android:backgroundTint="@color/widget_preview_event_purple" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/WidgetPreviewWeekDay"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sun"
android:textColor="@color/widget_preview_on_surface"
android:textSize="11sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:textColor="@color/widget_preview_on_surface"
android:textSize="16sp"
android:textStyle="bold" />
<Space
android:layout_width="wrap_content"
android:layout_height="6dp" />
</LinearLayout>
</LinearLayout>
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="widget_preview_surface">@android:color/system_neutral1_900</color>
<color name="widget_preview_surface">@android:color/system_accent2_700</color>
<color name="widget_preview_cell">@android:color/system_accent2_900</color>
<color name="widget_preview_outside">@android:color/system_neutral2_600</color>
<color name="widget_preview_on_surface">@android:color/system_neutral1_50</color>
<color name="widget_preview_variant">@android:color/system_neutral2_200</color>
<color name="widget_preview_primary">@android:color/system_accent1_200</color>
<color name="widget_preview_on_primary">@android:color/system_accent1_800</color>
<color name="widget_preview_row">@android:color/system_accent2_800</color>
</resources>
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="widget_preview_surface">#101316</color>
<color name="widget_preview_surface">#2B3742</color>
<color name="widget_preview_cell">#1C252D</color>
<color name="widget_preview_outside">#3A4651</color>
<color name="widget_preview_on_surface">#E1E3E6</color>
<color name="widget_preview_variant">#A8ADB2</color>
<color name="widget_preview_primary">#A3CBE2</color>
<color name="widget_preview_on_primary">#003348</color>
<color name="widget_preview_row">#2D3236</color>
</resources>
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="widget_preview_surface">@android:color/system_neutral1_50</color>
<color name="widget_preview_surface">@android:color/system_accent2_100</color>
<color name="widget_preview_cell">@android:color/system_accent2_10</color>
<color name="widget_preview_outside">@android:color/system_neutral2_300</color>
<color name="widget_preview_on_surface">@android:color/system_neutral1_900</color>
<color name="widget_preview_variant">@android:color/system_neutral2_700</color>
<color name="widget_preview_primary">@android:color/system_accent1_600</color>
<color name="widget_preview_on_primary">@android:color/system_accent1_0</color>
<color name="widget_preview_row">@android:color/system_accent2_100</color>
</resources>
+3
View File
@@ -621,6 +621,9 @@
<string name="settings_past_events_sample_morning">Team review</string>
<string name="settings_past_events_sample_midday">Lunch with Robin</string>
<string name="settings_past_events_sample_evening">Choir practice</string>
<!-- Stand-in event titles in the widget picker previews. Short, everyday entries. -->
<string name="widget_preview_sample_trip">Weekend trip</string>
<string name="widget_preview_sample_dentist">Dentist</string>
<string name="settings_agenda_header">Agenda</string>
<string name="settings_agenda_range">Agenda range</string>
<string name="settings_agenda_range_hint">How far ahead the Agenda screen lists events.</string>
@@ -1,12 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Colours for the static widget-picker previews. Base = brand light fallback
(API < 31). values-v31 maps them to the Material You dynamic palette so the
preview matches the live Glance widget; -night holds the dark variants. -->
<!-- Colours for the static widget-picker previews (Android 14 and below; 15+
shows the generated preview). Base = brand light fallback (API < 31).
values-v31 maps them to the Material You dynamic palette so the preview
matches the live Glance widget; -night holds the dark variants. -->
<resources>
<color name="widget_preview_surface">#FBFCFE</color>
<color name="widget_preview_surface">#D6E4F0</color>
<color name="widget_preview_cell">#EEF3F8</color>
<color name="widget_preview_outside">#C2CCD6</color>
<color name="widget_preview_on_surface">#191C1F</color>
<color name="widget_preview_variant">#6E7479</color>
<color name="widget_preview_primary">#3B5364</color>
<color name="widget_preview_on_primary">#FFFFFF</color>
<color name="widget_preview_row">#E1E6EB</color>
<color name="widget_preview_event_blue">#039BE5</color>
<color name="widget_preview_event_green">#33B679</color>
<color name="widget_preview_event_purple">#8E24AA</color>
<color name="widget_preview_event_orange">#F4511E</color>
<color name="widget_preview_event_red">#D50000</color>
<color name="widget_preview_on_event_light">#000000</color>
<color name="widget_preview_on_event_dark">#FFFFFF</color>
</resources>
@@ -1,23 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Shared looks for the static widget-picker previews. -->
<resources>
<style name="WidgetPreviewHeaderButton">
<item name="android:layout_width">24dp</item>
<item name="android:layout_height">22dp</item>
<item name="android:layout_marginStart">4dp</item>
<item name="android:background">@drawable/preview_widget_cell_bg</item>
<item name="android:gravity">center</item>
<item name="android:textColor">@color/widget_preview_on_surface</item>
<item name="android:textSize">12sp</item>
</style>
<style name="WidgetPreviewAddButton" parent="WidgetPreviewHeaderButton">
<item name="android:layout_width">30dp</item>
<item name="android:background">@drawable/preview_widget_today_bg</item>
<item name="android:textColor">@color/widget_preview_on_primary</item>
<item name="android:textSize">15sp</item>
</style>
<style name="WidgetPreviewWeekDay">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">match_parent</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_marginHorizontal">2dp</item>
<item name="android:background">@drawable/preview_widget_cell_bg</item>
<item name="android:gravity">center</item>
<item name="android:textColor">@color/widget_preview_on_surface</item>
<item name="android:textSize">12sp</item>
</style>
<style name="WidgetPreviewEventRow">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginTop">3dp</item>
<item name="android:background">@drawable/preview_widget_row_bg</item>
<item name="android:paddingHorizontal">10dp</item>
<item name="android:paddingVertical">3dp</item>
<item name="android:textColor">@color/widget_preview_on_surface</item>
<item name="android:textSize">11sp</item>
</style>
</resources>