changeset 2553:2b4f2929408e

Android: Fix issue with specifying static sizes... still some issues. Needed to set the width and height DURING creation of LayoutParams. Some android controls still don't layout properly when forcing sizes. So change to -1 (auto size) in dwtest to work around it for now.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 15 May 2021 20:46:17 +0000
parents 303f544d14fa
children 4c75fb6089a9
files android/DWindows.kt dwtest.c
diffstat 2 files changed, 43 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- a/android/DWindows.kt	Sat May 15 19:11:53 2021 +0000
+++ b/android/DWindows.kt	Sat May 15 20:46:17 2021 +0000
@@ -951,7 +951,10 @@
             }
 
             if (box != null) {
-                if ((item is LinearLayout) or (item is ScrollView)) {
+                var weight: Float = 1F
+
+                // If it is a box, match parent based on direction
+                if ((item is LinearLayout) || (item is ScrollView)) {
                     if (box.orientation == LinearLayout.VERTICAL) {
                         if (hsize != 0) {
                             w = LinearLayout.LayoutParams.MATCH_PARENT
@@ -961,50 +964,54 @@
                             h = LinearLayout.LayoutParams.MATCH_PARENT
                         }
                     }
-                }
-                var params: LinearLayout.LayoutParams = LinearLayout.LayoutParams(w, h)
-
                 // If it isn't a box... set or calculate the size as needed
-                if (item !is LinearLayout) {
+                } else {
                     if(width != -1 || height != -1) {
                         item.measure(0, 0)
                     }
-                    if(width > 0) {
-                        w = width
-                    } else if (width == -1) {
-                        w = item.getMeasuredWidth()
+                    if(hsize == 0) {
+                        if (width > 0) {
+                            w = width
+                        }
+                    } else {
+                        if (width > 0) {
+                            weight = width.toFloat()
+                        } else if (width == -1) {
+                            val newwidth = item.getMeasuredWidth()
+
+                            if(newwidth > 0) {
+                                weight = newwidth.toFloat()
+                            }
+                        }
                     }
-                    if(height > 0) {
-                        h = height
-                    } else if(height == -1) {
-                        h = item.getMeasuredHeight()
-                    }
-                    // Handle non-expandable items
-                    if(hsize == 0 && w > 0) {
-                        params.width = w
-                    }
-                    if(vsize == 0 && h > 0) {
-                        params.height = h
+                    if(vsize == 0) {
+                        if (height > 0) {
+                            h = height
+                        }
+                    } else {
+                        if (height > 0) {
+                            weight = height.toFloat()
+                        } else if (height == -1) {
+                            val newheight = item.getMeasuredHeight()
+
+                            if(newheight > 0) {
+                                weight = newheight.toFloat()
+                            }
+                        }
                     }
                 }
 
+                var params: LinearLayout.LayoutParams = LinearLayout.LayoutParams(w, h)
+
                 // Handle expandable items by giving them a weight...
                 // in the direction of the box.
                 if (box.orientation == LinearLayout.VERTICAL) {
                     if (vsize != 0) {
-                        if (w > 0) {
-                            params.weight = w.toFloat()
-                        } else {
-                            params.weight = 1F
-                        }
+                        params.weight = weight
                     }
                 } else {
                     if (hsize != 0) {
-                        if (h > 0) {
-                            params.weight = h.toFloat()
-                        } else {
-                            params.weight = 1F
-                        }
+                        params.weight = weight
                     }
                 }
                 // Gravity needs to match the expandable settings
--- a/dwtest.c	Sat May 15 19:11:53 2021 +0000
+++ b/dwtest.c	Sat May 15 20:46:17 2021 +0000
@@ -1140,9 +1140,9 @@
     dw_box_pack_start(hbox, imagestretchcheck, -1, 25, FALSE, TRUE, 0);
 
     button1 = dw_button_new("Refresh", 1223L );
-    dw_box_pack_start(hbox, button1, 100, 25, FALSE, TRUE, 0);
+    dw_box_pack_start(hbox, button1, -1, 25, FALSE, TRUE, 0);
     button2 = dw_button_new("Print", 1224L );
-    dw_box_pack_start(hbox, button2, 100, 25, FALSE, TRUE, 0);
+    dw_box_pack_start(hbox, button2, -1, 25, FALSE, TRUE, 0);
 
     /* Pre-create the scrollbars so we can query their sizes */
     vscrollbar = dw_scrollbar_new(DW_VERT, 50);
@@ -1810,19 +1810,19 @@
     dw_box_pack_start(notebookbox8, scrollbox, 0, 0, TRUE, TRUE, 1);
 
     abutton1 = dw_button_new("Show Adjustments", 0);
-    dw_box_pack_start(scrollbox, abutton1, -1, 30, FALSE, FALSE, 0);
+    dw_box_pack_start(scrollbox, abutton1, -1, -1, FALSE, FALSE, 0);
     dw_signal_connect(abutton1, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(scrollbox_button_callback), NULL);
 
     for(i = 0; i < MAX_WIDGETS; i++)
     {
         tmpbox = dw_box_new(DW_HORZ, 0);
-        dw_box_pack_start(scrollbox, tmpbox, 0, 24, TRUE, FALSE, 2);
+        dw_box_pack_start(scrollbox, tmpbox, 0, 0, TRUE, FALSE, 2);
         sprintf(buf, "Label %d", i);
         labelarray[i] = dw_text_new(buf , 0);
-        dw_box_pack_start( tmpbox, labelarray[i], 0, 20, TRUE, FALSE, 0);
+        dw_box_pack_start( tmpbox, labelarray[i], 0, -1, TRUE, FALSE, 0);
         sprintf(buf, "Entry %d", i);
         entryarray[i] = dw_entryfield_new(buf , i);
-        dw_box_pack_start(tmpbox, entryarray[i], 0, 20, TRUE, FALSE, 0);
+        dw_box_pack_start(tmpbox, entryarray[i], 0, -1, TRUE, FALSE, 0);
     }
 }