@@ -22,6 +22,8 @@ import com.itsaky.androidide.annotations.inflater.ViewAdapter
22
22
import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner
23
23
import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner.Group.LAYOUTS
24
24
import com.itsaky.androidide.inflater.AttributeHandlerScope
25
+ import com.itsaky.androidide.inflater.IView
26
+ import com.itsaky.androidide.inflater.IViewGroup
25
27
import com.itsaky.androidide.inflater.models.UiWidget
26
28
import com.itsaky.androidide.resources.R.drawable
27
29
import com.itsaky.androidide.resources.R.string
@@ -34,21 +36,41 @@ import com.itsaky.androidide.resources.R.string
34
36
@ViewAdapter(GridLayout ::class )
35
37
@IncludeInDesigner(group = LAYOUTS )
36
38
open class GridLayoutAdapter <T : GridLayout > : ViewGroupAdapter <T >() {
37
- override fun createAttrHandlers (create : (String , AttributeHandlerScope <T >.() -> Unit ) -> Unit ) {
39
+
40
+ override fun createAttrHandlers (
41
+ create : (String , AttributeHandlerScope <T >.() -> Unit ) -> Unit
42
+ ) {
38
43
super .createAttrHandlers(create)
39
44
create(" alignmentMode" ) { view.alignmentMode = parseAlignmentMode(value) }
40
- create(" columnCount" ) { view.columnCount = parseInteger(value, Int .MIN_VALUE ) }
41
- create(" columnOrderPreserved" ) { view.isColumnOrderPreserved = parseBoolean(value) }
45
+ create(" columnCount" ) {
46
+ view.columnCount = parseInteger(value, Int .MIN_VALUE )
47
+ }
48
+ create(" columnOrderPreserved" ) {
49
+ view.isColumnOrderPreserved = parseBoolean(value)
50
+ }
42
51
create(" orientation" ) { view.orientation = parseOrientation(value) }
43
52
create(" rowCount" ) { view.rowCount = parseInteger(value, Int .MIN_VALUE ) }
44
- create(" rowOrderPreserved" ) { view.isRowOrderPreserved = parseBoolean(value) }
53
+ create(" rowOrderPreserved" ) {
54
+ view.isRowOrderPreserved = parseBoolean(value)
55
+ }
45
56
create(" useDefaultMargins" ) { view.useDefaultMargins = parseBoolean(value) }
46
57
}
47
58
48
59
override fun createUiWidgets (): List <UiWidget > {
49
- return listOf (
50
- UiWidget (GridLayout ::class .java, string.widget_grid_layout, drawable.ic_widget_grid_layout)
51
- )
60
+ return listOf (UiWidget (GridLayout ::class .java, string.widget_grid_layout,
61
+ drawable.ic_widget_grid_layout))
62
+ }
63
+
64
+ override fun canAcceptChild (view : IViewGroup , child : IView ? , name : String
65
+ ): Boolean {
66
+ (view.view as GridLayout ).run {
67
+ if (childCount >= rowCount * columnCount) {
68
+ // the maximum number of child views has been reached
69
+ // no more views can be added
70
+ return false
71
+ }
72
+ }
73
+ return super .canAcceptChild(view, child, name)
52
74
}
53
75
54
76
protected open fun parseOrientation (value : String ): Int {
0 commit comments