当前位置: 代码迷 >> Android >> 使用C# + Xamarin开发Android应用- 动态添加控件
  详细解决方案

使用C# + Xamarin开发Android应用- 动态添加控件

热度:39   发布时间:2016-04-28 00:40:53.0
使用C# + Xamarin开发Android应用-- 动态添加控件
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;        }    }


  相关解决方案