Quantcast
Channel: Xamarin.Forms — Xamarin Community Forums
Viewing all articles
Browse latest Browse all 75885

Can't add dinamically layout to content of a scrollView

$
0
0

Hi!
Basically I'm trying to dinamically add layouts to the content of a scrollView. I did an example code but it only works at the second click, for some reason it doesn't render the first layout added!!! Am I doing something wrong?


public class PageExperiment
    {
        ScrollView _page;
        
        public PageExperiment()
        {
            _page = new ScrollView { Orientation = ScrollOrientation.Vertical,
                                     Content = new RelativeLayout { BackgroundColor = Color.White} };

            var button = new Button { Text="Add Button"};
            button.Clicked += OnButtonClicked;
            ((RelativeLayout)_page.Content).Children.Add(button,xConstraint:null);
        }

        public ScrollView getPage()
        {
            return _page;
        } 
        void OnButtonClicked(object sender, EventArgs e)
        {
            var relative = AddLayout();
            var content = (RelativeLayout)_page.Content;
            var v = content.Children[content.Children.Count - 1];
            Constraint xConstraint = Constraint.Constant(0);
            Constraint yConstraint = Constraint.RelativeToView(v, (parent, sibling) => {
                return sibling.Y + sibling.Height;
            });            

            ((RelativeLayout)_page.Content).Children.Add((View)relative, xConstraint, yConstraint);        
            
        }

        public VisualElement AddLayout()
        {
            var root = new RelativeLayout();

            root.BackgroundColor = Color.Red;
            var a = new Label { Text = "Button Added!!!!", BackgroundColor = Color.Purple};
            a.FontSize = 30;
            root.Children.Add(a, xConstraint:null);

            return root;
        }
    }

Viewing all articles
Browse latest Browse all 75885

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>