@@ -13,16 +13,17 @@ import androidx.glance.action.Action
13
13
import androidx.glance.appwidget.components.CircleIconButton
14
14
import androidx.glance.appwidget.components.Scaffold
15
15
import androidx.glance.appwidget.components.TitleBar
16
- import androidx.glance.layout.Box
17
16
import androidx.glance.layout.fillMaxSize
18
17
import androidx.glance.layout.fillMaxWidth
19
18
import androidx.glance.layout.padding
20
19
import androidx.glance.text.FontWeight
21
20
import androidx.glance.text.Text
22
21
import androidx.glance.text.TextStyle
23
22
import com.example.platform.ui.appwidgets.R
24
- import com.example.platform.ui.appwidgets.glance.layout.collections.layout.CheckListLayoutDimensions.contentEndPadding
23
+ import com.example.platform.ui.appwidgets.glance.layout.collections.layout.CheckListLayoutDimensions.checkListRowStartPadding
24
+ import com.example.platform.ui.appwidgets.glance.layout.collections.layout.CheckListLayoutDimensions.checkListRowEndPadding
25
25
import com.example.platform.ui.appwidgets.glance.layout.collections.layout.CheckListLayoutDimensions.scaffoldHorizontalPadding
26
+ import com.example.platform.ui.appwidgets.glance.layout.collections.layout.CheckListLayoutDimensions.verticalItemSpacing
26
27
import com.example.platform.ui.appwidgets.glance.layout.collections.layout.CheckListLayoutDimensions.widgetPadding
27
28
import com.example.platform.ui.appwidgets.glance.layout.collections.layout.CheckListLayoutSize.Companion.isWiderThan
28
29
import com.example.platform.ui.appwidgets.glance.layout.collections.layout.CheckListLayoutSize.Companion.showTitleBar
@@ -124,20 +125,17 @@ fun CheckListLayout(
124
125
null
125
126
}
126
127
) {
127
- // Apply end padding to compensate for the start padding included via checkbox icon.
128
- Box (modifier = GlanceModifier .padding(end = contentEndPadding)) {
129
- if (items.isEmpty()) {
130
- EmptyListContent ()
131
- } else {
132
- Content (
133
- items = items,
134
- checkedItems = checkedItems,
135
- onCheck = onCheck,
136
- checkedIconRes = checkedIconRes,
137
- unCheckedIconRes = unCheckedIconRes,
138
- checkButtonContentDescription = checkButtonContentDescription,
139
- )
140
- }
128
+ if (items.isEmpty()) {
129
+ EmptyListContent ()
130
+ } else {
131
+ Content (
132
+ items = items,
133
+ checkedItems = checkedItems,
134
+ onCheck = onCheck,
135
+ checkedIconRes = checkedIconRes,
136
+ unCheckedIconRes = unCheckedIconRes,
137
+ checkButtonContentDescription = checkButtonContentDescription,
138
+ )
141
139
}
142
140
}
143
141
}
@@ -154,6 +152,7 @@ private fun Content(
154
152
RoundedScrollingLazyColumn (
155
153
modifier = GlanceModifier .fillMaxSize(),
156
154
items = items,
155
+ verticalItemsSpacing = verticalItemSpacing,
157
156
itemContentProvider = { item ->
158
157
CheckListItem (
159
158
item = item,
@@ -183,6 +182,12 @@ private fun CheckListItem(
183
182
modifier : GlanceModifier = GlanceModifier ,
184
183
isChecked : Boolean ,
185
184
) {
185
+ val listItemEndPadding = if (item.hasTrailingIcons) {
186
+ 0 .dp
187
+ } else {
188
+ checkListRowEndPadding
189
+ }
190
+
186
191
@Composable
187
192
fun CheckButton () {
188
193
CircleIconButton (
@@ -235,7 +240,8 @@ private fun CheckListItem(
235
240
236
241
// List item itself is not clickable, as it contains more trailing actions.
237
242
ListItem (
238
- modifier = modifier.fillMaxWidth(),
243
+ modifier = modifier.fillMaxWidth()
244
+ .padding(start = checkListRowStartPadding, end = listItemEndPadding),
239
245
contentSpacing = 0 .dp, // Since check box's tap target covers the needed visual spacing
240
246
leadingContent = { CheckButton () },
241
247
headlineContent = { Title () },
@@ -395,10 +401,13 @@ private object CheckListLayoutTextStyles {
395
401
private object CheckListLayoutDimensions {
396
402
val widgetPadding = 12 .dp
397
403
398
- // Padding needed to deduct from widget's start padding to align the check icon with title bar.
399
- val checkboxIconOffsetPadding = 8 .dp
400
- // To compensate for the space taken by tap target padding of the checkbox, we use less padding in
401
- // the start.
402
- val scaffoldHorizontalPadding = widgetPadding - checkboxIconOffsetPadding
403
- val contentEndPadding = checkboxIconOffsetPadding
404
+ val verticalItemSpacing = 4 .dp
405
+
406
+ // Full width scrollable content
407
+ val scaffoldHorizontalPadding = 0 .dp
408
+ // Match with the padding applied to the app icon in title bar; this allow us to vertically align
409
+ // the app icon with check icon button.
410
+ val checkListRowStartPadding = 2 .dp
411
+ // Padding to be applied on right of each item if there isn't a icon button on right.
412
+ val checkListRowEndPadding = widgetPadding
404
413
}
0 commit comments