C# + Xamarin を使用して Android アプリケーションを開発 - コントロールを動的に追加

黄舟
リリース: 2017-03-01 10:30:45
オリジナル
3468 人が閲覧しました

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;
        }
    }
ログイン後にコピー

上記は、C# + Xamarin を使用して Android アプリケーションを開発する - コントロールを動的に追加するの内容です。内容については、PHP Chinese Net (www.php.cn) にご注意ください。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート