Home >Backend Development >C#.Net Tutorial >Develop Android applications using C# + Xamarin - dynamically add controls

Develop Android applications using C# + Xamarin - dynamically add controls

黄舟
黄舟Original
2017-03-01 10:30:453480browse

Using C# + Xamarin to develop Android applications--dynamically adding controls

public class MyOrders : Activity
    {

        private DynamicControl _dynaControl;

        public MyOrders()
        {
            _dynaControl = new DynamicControl();
        }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            try
            {
                SetContentView(Resource.Layout.MyOrders);

                var layout = (TableLayout)FindViewById(Resource.Id.myorders_layout);
                var header = AddHeader();
                layout.AddView(header);

                layout.AddView(AddPendingServiceItem("Service 1"));
                layout.AddView(AddPendingServiceItem("Service 2"));
                layout.AddView(AddPendingServiceItem("Service 3"));

                layout.AddView(AddConfirmedServiceItem("Service 4"));
                layout.AddView(AddConfirmedServiceItem("Service 5"));
                layout.AddView(AddConfirmedServiceItem("Service 6"));
                layout.AddView(AddConfirmedServiceItem("Service 7"));
            }
            catch (Exception ex)
            {
                this.ShowAlert(ex.Message);
            }
        }

        public View AddHeader()
        {
            var header = new TableRow(this);
            header.LayoutParameters = new TableLayout.LayoutParams(TableLayout.LayoutParams.FillParent,
            TableLayout.LayoutParams.WrapContent);
            header.AddView(_dynaControl.NewText(this, "Service"));
            header.AddView(_dynaControl.NewText(this, "Status"));
            header.AddView(_dynaControl.NewText(this, "Created At"));
            header.AddView(_dynaControl.NewText(this, "Action"));
            return header;
        }

        public View AddPendingServiceItem(string serviceName)
        {
            var tableRow = new TableRow(this);
            tableRow.LayoutParameters = new TableLayout.LayoutParams(TableLayout.LayoutParams.FillParent,
                TableLayout.LayoutParams.WrapContent);

            tableRow.AddView(_dynaControl.NewText(this, string.Format("{0}  ", serviceName)));
            tableRow.AddView(_dynaControl.NewText(this, string.Format("{0}  ", "Pending"), Color.OrangeRed));
            tableRow.AddView(_dynaControl.NewText(this, string.Format("{0}  ", "2015-5-19 \r\n14:20:33")));
            tableRow.AddView(_dynaControl.AddButton(this, "Details"));
            return tableRow;
        }

        public View AddConfirmedServiceItem(string serviceName)
        {
            var tableRow = new TableRow(this);
            tableRow.AddView(_dynaControl.NewText(this, string.Format("{0}  ", serviceName)));
            tableRow.AddView(_dynaControl.NewText(this, string.Format("{0}  ", "Confirmed"), Color.DarkGreen));
            tableRow.AddView(_dynaControl.NewText(this, string.Format("{0}", "2015-5-19 \r\n 14:30:43")));
            tableRow.AddView(_dynaControl.AddButton(this, "Rebook"));

            tableRow.LayoutParameters = new TableLayout.LayoutParams(TableLayout.LayoutParams.FillParent,
                TableLayout.LayoutParams.WrapContent);

            return tableRow;
        }
    }

杈呭姪绫综合

public class DynamicControl
    {
        public Button AddButton(Context context, string text, EventHandler clickAction = null)
        {
            var btn = new Button(context);
            btn.SetText(text, TextView.BufferType.Normal);
            if (clickAction != null)
            {
                btn.Click += clickAction;
            }
            
            return btn;
        }

        public TextView NewText(Context context, string str, Color? color = null)
        {
            var text = new TextView(context);
            if (color.HasValue)
            {
                text.SetTextColor(color.Value);
            }

            text.SetText(str, TextView.BufferType.Normal);

            return text;
        }
    }

The above is using C#+Xamarin to develop Android applications--dynamically adding controls Content, please pay attention to the PHP Chinese website (www.php.cn) for more related content!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn