[NUI] Add LinearLayout cases in NUILayout
authorJaehyun Cho <jae_hyun.cho@samsung.com>
Wed, 19 Mar 2025 05:59:52 +0000 (14:59 +0900)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Tue, 25 Mar 2025 06:44:47 +0000 (15:44 +0900)
55 files changed:
test/NUILayout/Examples/LinearLayoutTest/LinearHMatch.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHMatchCMargin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHMatchCellPadding.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMargin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMarginPadding.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMax.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMinMax.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHMatchPadding.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSize.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeBeginBottom.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeBeginCenter.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeBeginTop.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCMargin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCellPadding.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCenter.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCenterBottom.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCenterTop.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeEndBottom.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeEndCenter.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeEndTop.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMargin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMarginPadding.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMax.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMinMax.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearHSizePadding.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVMatch.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVMatchCMargin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVMatchCellPadding.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMargin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMarginPadding.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMax.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMinMax.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVMatchPadding.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSize.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeBeginBottom.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeBeginCenter.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeBeginTop.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCMargin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCellPadding.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCenter.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCenterBottom.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCenterTop.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeEndBottom.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeEndCenter.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeEndTop.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMargin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMarginPadding.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMax.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMin.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMinMax.cs [new file with mode: 0644]
test/NUILayout/Examples/LinearLayoutTest/LinearVSizePadding.cs [new file with mode: 0644]
test/NUILayout/LayoutChildren.cs [new file with mode: 0644]

diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHMatch.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHMatch.cs
new file mode 100644 (file)
index 0000000..0803a21
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHMatch : View, IExample
+    {
+        public LinearHMatch()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchCMargin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchCMargin.cs
new file mode 100644 (file)
index 0000000..01a8436
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHMatchCMargin : View, IExample
+    {
+        public LinearHMatchCMargin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    Margin = 10,
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent ChildMargin", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchCellPadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchCellPadding.cs
new file mode 100644 (file)
index 0000000..3f156ce
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHMatchCellPadding : View, IExample
+    {
+        public LinearHMatchCellPadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    CellPadding = new Size2D(10, 10),
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent CellPadding", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMargin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMargin.cs
new file mode 100644 (file)
index 0000000..c442afe
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHMatchMargin : View, IExample
+    {
+        public LinearHMatchMargin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Margin = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Margin", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMarginPadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMarginPadding.cs
new file mode 100644 (file)
index 0000000..3955e00
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHMatchMarginPadding : View, IExample
+    {
+        public LinearHMatchMarginPadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Margin = 50,
+                Padding = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Margin Padding", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMax.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMax.cs
new file mode 100644 (file)
index 0000000..7bff92d
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHMatchMax : View, IExample
+    {
+        public LinearHMatchMax()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MaximumSize = new Size(50, 50),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Max", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMin.cs
new file mode 100644 (file)
index 0000000..234fe36
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHMatchMin : View, IExample
+    {
+        public LinearHMatchMin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MinimumSize = new Size(200, 200),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Min", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMinMax.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchMinMax.cs
new file mode 100644 (file)
index 0000000..9fd2d06
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHMatchMinMax : View, IExample
+    {
+        public LinearHMatchMinMax()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MinimumSize = new Size(200, 200),
+                    MaximumSize = new Size(50, 50),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Min Max", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchPadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHMatchPadding.cs
new file mode 100644 (file)
index 0000000..2310ed0
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHMatchPadding : View, IExample
+    {
+        public LinearHMatchPadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Padding = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Padding", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSize.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSize.cs
new file mode 100644 (file)
index 0000000..82e72a3
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSize : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSize()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeBeginBottom.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeBeginBottom.cs
new file mode 100644 (file)
index 0000000..c9b78fd
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeBeginBottom : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeBeginBottom()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    HorizontalAlignment = HorizontalAlignment.Begin,
+                    VerticalAlignment = VerticalAlignment.Bottom,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Begin Bottom", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeBeginCenter.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeBeginCenter.cs
new file mode 100644 (file)
index 0000000..f92903d
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeBeginCenter : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeBeginCenter()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    HorizontalAlignment = HorizontalAlignment.Begin,
+                    VerticalAlignment = VerticalAlignment.Center,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Begin Center", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeBeginTop.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeBeginTop.cs
new file mode 100644 (file)
index 0000000..9617fbd
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeBeginTop : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeBeginTop()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    HorizontalAlignment = HorizontalAlignment.Begin,
+                    VerticalAlignment = VerticalAlignment.Top,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Begin Top", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCMargin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCMargin.cs
new file mode 100644 (file)
index 0000000..c6780fd
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeCMargin : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeCMargin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    Margin = 10,
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size ChildMargin", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCellPadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCellPadding.cs
new file mode 100644 (file)
index 0000000..7089f1f
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeCellPadding : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeCellPadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    CellPadding = new Size2D(10, 10),
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size CellPadding", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCenter.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCenter.cs
new file mode 100644 (file)
index 0000000..f8c7a31
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeCenter : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeCenter()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Center,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Center", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCenterBottom.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCenterBottom.cs
new file mode 100644 (file)
index 0000000..5138027
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeCenterBottom : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeCenterBottom()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Bottom,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Center Bottom", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCenterTop.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeCenterTop.cs
new file mode 100644 (file)
index 0000000..cb75b00
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeCenterTop : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeCenterTop()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Top,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Center Top", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeEndBottom.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeEndBottom.cs
new file mode 100644 (file)
index 0000000..80c8f5b
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeEndBottom : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeEndBottom()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    HorizontalAlignment = HorizontalAlignment.End,
+                    VerticalAlignment = VerticalAlignment.Bottom,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size End Bottom", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeEndCenter.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeEndCenter.cs
new file mode 100644 (file)
index 0000000..29eb5e0
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeEndCenter : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeEndCenter()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    HorizontalAlignment = HorizontalAlignment.End,
+                    VerticalAlignment = VerticalAlignment.Center,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size End Center", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeEndTop.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeEndTop.cs
new file mode 100644 (file)
index 0000000..d9e21e9
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeEndTop : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeEndTop()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    HorizontalAlignment = HorizontalAlignment.End,
+                    VerticalAlignment = VerticalAlignment.Top,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size End Top", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMargin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMargin.cs
new file mode 100644 (file)
index 0000000..f69221c
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeMargin : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeMargin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Margin = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Margin", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMarginPadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMarginPadding.cs
new file mode 100644 (file)
index 0000000..d5a557c
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeMarginPadding : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeMarginPadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Margin = 50,
+                Padding = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Margin Padding", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMax.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMax.cs
new file mode 100644 (file)
index 0000000..9655ad0
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeMax : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeMax()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MaximumSize = new Size(50, 50),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Max", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMin.cs
new file mode 100644 (file)
index 0000000..00ed83e
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeMin : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeMin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MinimumSize = new Size(200, 200),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Min", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMinMax.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizeMinMax.cs
new file mode 100644 (file)
index 0000000..10a0994
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizeMinMax : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizeMinMax()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MinimumSize = new Size(200, 200),
+                    MaximumSize = new Size(50, 50),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Min Max", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearHSizePadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearHSizePadding.cs
new file mode 100644 (file)
index 0000000..a6a34c0
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearHSizePadding : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearHSizePadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout(),
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Padding = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H Size Padding", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVMatch.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVMatch.cs
new file mode 100644 (file)
index 0000000..f944dc4
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVMatch : View, IExample
+    {
+        public LinearVMatch()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchCMargin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchCMargin.cs
new file mode 100644 (file)
index 0000000..11b4f36
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVMatchCMargin : View, IExample
+    {
+        public LinearVMatchCMargin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    Margin = 10,
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent ChildMargin", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchCellPadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchCellPadding.cs
new file mode 100644 (file)
index 0000000..1f816b8
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVMatchCellPadding : View, IExample
+    {
+        public LinearVMatchCellPadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    CellPadding = new Size2D(10, 10),
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent CellPadding", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMargin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMargin.cs
new file mode 100644 (file)
index 0000000..de604fb
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVMatchMargin : View, IExample
+    {
+        public LinearVMatchMargin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Margin = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Margin", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMarginPadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMarginPadding.cs
new file mode 100644 (file)
index 0000000..8099a4d
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVMatchMarginPadding : View, IExample
+    {
+        public LinearVMatchMarginPadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Margin = 50,
+                Padding = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Margin Padding", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMax.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMax.cs
new file mode 100644 (file)
index 0000000..228453c
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVMatchMax : View, IExample
+    {
+        public LinearVMatchMax()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MaximumSize = new Size(50, 50),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Max", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMin.cs
new file mode 100644 (file)
index 0000000..dabb89c
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVMatchMin : View, IExample
+    {
+        public LinearVMatchMin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MinimumSize = new Size(200, 200),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Min", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMinMax.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchMinMax.cs
new file mode 100644 (file)
index 0000000..71179dc
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVMatchMinMax : View, IExample
+    {
+        public LinearVMatchMinMax()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MinimumSize = new Size(200, 200),
+                    MaximumSize = new Size(50, 50),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Min Max", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchPadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVMatchPadding.cs
new file mode 100644 (file)
index 0000000..dc1f759
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVMatchPadding : View, IExample
+    {
+        public LinearVMatchPadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Padding = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = LayoutParamPolicies.MatchParent,
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "H MatchParent Padding", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSize.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSize.cs
new file mode 100644 (file)
index 0000000..e108cee
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSize : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSize()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeBeginBottom.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeBeginBottom.cs
new file mode 100644 (file)
index 0000000..d13fc74
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeBeginBottom : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeBeginBottom()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Begin,
+                    VerticalAlignment = VerticalAlignment.Bottom,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Begin Bottom", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeBeginCenter.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeBeginCenter.cs
new file mode 100644 (file)
index 0000000..e554de3
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeBeginCenter : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeBeginCenter()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Begin,
+                    VerticalAlignment = VerticalAlignment.Center,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Begin Center", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeBeginTop.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeBeginTop.cs
new file mode 100644 (file)
index 0000000..15486b2
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeBeginTop : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeBeginTop()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Begin,
+                    VerticalAlignment = VerticalAlignment.Top,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Begin Top", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCMargin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCMargin.cs
new file mode 100644 (file)
index 0000000..d5464e6
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeCMargin : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeCMargin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    Margin = 10,
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size ChildMargin", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCellPadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCellPadding.cs
new file mode 100644 (file)
index 0000000..3f73ff8
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeCellPadding : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeCellPadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    CellPadding = new Size2D(10, 10),
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size CellPadding", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCenter.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCenter.cs
new file mode 100644 (file)
index 0000000..144ed44
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeCenter : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeCenter()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Center,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Center", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCenterBottom.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCenterBottom.cs
new file mode 100644 (file)
index 0000000..8149788
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeCenterBottom : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeCenterBottom()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Bottom,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Center Bottom", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCenterTop.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeCenterTop.cs
new file mode 100644 (file)
index 0000000..8c1b04a
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeCenterTop : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeCenterTop()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Top,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Center Top", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeEndBottom.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeEndBottom.cs
new file mode 100644 (file)
index 0000000..4c3db82
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeEndBottom : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeEndBottom()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.End,
+                    VerticalAlignment = VerticalAlignment.Bottom,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size End Bottom", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeEndCenter.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeEndCenter.cs
new file mode 100644 (file)
index 0000000..3e9de5c
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeEndCenter : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeEndCenter()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.End,
+                    VerticalAlignment = VerticalAlignment.Center,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size End Center", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeEndTop.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeEndTop.cs
new file mode 100644 (file)
index 0000000..aeec724
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeEndTop : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeEndTop()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.End,
+                    VerticalAlignment = VerticalAlignment.Top,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size End Top", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMargin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMargin.cs
new file mode 100644 (file)
index 0000000..7f15cad
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeMargin : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeMargin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Margin = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Margin", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMarginPadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMarginPadding.cs
new file mode 100644 (file)
index 0000000..c233278
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeMarginPadding : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeMarginPadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Margin = 50,
+                Padding = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Margin", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMax.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMax.cs
new file mode 100644 (file)
index 0000000..7852322
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeMax : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeMax()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MaximumSize = new Size(50, 50),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Max", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMin.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMin.cs
new file mode 100644 (file)
index 0000000..1d8cad8
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeMin : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeMin()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MinimumSize = new Size(200, 200),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Min", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMinMax.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizeMinMax.cs
new file mode 100644 (file)
index 0000000..25950ca
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizeMinMax : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizeMinMax()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                    MinimumSize = new Size(200, 200),
+                    MaximumSize = new Size(50, 50),
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Min Max", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/Examples/LinearLayoutTest/LinearVSizePadding.cs b/test/NUILayout/Examples/LinearLayoutTest/LinearVSizePadding.cs
new file mode 100644 (file)
index 0000000..43e45cb
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright(c) 2025 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUILayout
+{
+    internal class LinearVSizePadding : View, IExample
+    {
+                private readonly int _itemSize = 100;
+
+        public LinearVSizePadding()
+        {
+            Layout = new AbsoluteLayout();
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+            BackgroundColor = Color.Gray;
+
+            var linearLayout = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.DarkGray,
+                Padding = 50,
+            };
+            Add(linearLayout);
+
+            var views = new View[LayoutChildren.Count];
+
+            for (int i = 0; i < LayoutChildren.Count; ++i)
+            {
+                views[i] = new View()
+                {
+                    WidthSpecification = _itemSize,
+                    HeightSpecification = _itemSize,
+                    BackgroundColor = LayoutChildren.Colors[i],
+                };
+                linearLayout.Add(views[i]);
+            }
+
+            var timer = new Tizen.NUI.Timer(1000);
+            timer.Tick += (o, e) =>
+            {
+                foreach (var view in views)
+                {
+                    view.Layout.RequestLayout(); // Test if any unexpected behavior occurs.
+                }
+                return true;
+            };
+            timer.Start();
+        }
+
+        public void Activate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Activate()");
+
+            var contentPage = new ContentPage()
+            {
+                AppBar = new AppBar() { Title = "V Size Padding", BackgroundColor = Color.White },
+                Content = this,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                BackgroundColor = Color.LightGray,
+            };
+            Window.Default.GetDefaultNavigator().Push(contentPage);
+        }
+        public void Deactivate()
+        {
+            Console.WriteLine($"@@@ this.GetType().Name={this.GetType().Name}, Deactivate()");
+            Window.Default.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUILayout/LayoutChildren.cs b/test/NUILayout/LayoutChildren.cs
new file mode 100644 (file)
index 0000000..69e9847
--- /dev/null
@@ -0,0 +1,24 @@
+using Tizen.NUI;
+
+namespace NUILayout
+{
+    internal class LayoutChildren
+    {
+        public static readonly int Count = 10;
+        public static readonly Color[] Colors = new Color[Count];
+
+        static LayoutChildren()
+        {
+            Colors[0] = Color.Blue;
+            Colors[1] = Color.BlueViolet;
+            Colors[2] = Color.SkyBlue;
+            Colors[3] = Color.DarkBlue;
+            Colors[4] = Color.DodgerBlue;
+            Colors[5] = Color.CadetBlue;
+            Colors[6] = Color.LightBlue;
+            Colors[7] = Color.RoyalBlue;
+            Colors[8] = Color.CadetBlue;
+            Colors[9] = Color.SlateBlue;
+        }
+    }
+}