【问题标题】:How to add a table row dynamically to a table layout in xamarin如何在 xamarin 中将表格行动态添加到表格布局中
【发布时间】:2020-09-22 13:13:08
【问题描述】:

我正在尝试向表格布局动态添加一行。但是,当我尝试使用下面的代码时,新表行没有显示,尽管代码正在运行而没有崩溃。

这是代码:

            tl1 = (TableLayout)FindViewById(Resource.Id.tl1);
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.WrapContent, (float)1.0);
            layoutParams.SetMargins(10, 0, 5, 0);
            TableRow.LayoutParams layoutParams2 = new TableRow.LayoutParams(LayoutParams.MatchParent, LayoutParams.WrapContent);
            dbname = "eventsss";
            path = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), dbname);
            var db = new SQLiteConnection(path);
            db.CreateTable<CalendarEvent>();
            eventList = GetAllEvents();
            for (int i = 1; i <= eventList.Count; i++)
            {
                date = new TextView(this);
                date.LayoutParameters = layoutParams;
                date.SetBackgroundColor(Color.ParseColor("#FFFFC0"));
                date.SetTextSize(Android.Util.ComplexUnitType.Px, (float)30.0);
                date.SetTextColor(Color.Black);
                date.SetPadding(5, 5, 5, 5);
                name = new TextView(this);
                name.LayoutParameters = layoutParams;
                name.SetBackgroundColor(Color.ParseColor("#FFFFC0"));
                name.SetTextColor(Color.Black);
                name.SetTextSize(Android.Util.ComplexUnitType.Px, (float)30.0);
                name.SetPadding(5, 5, 5, 5);
                tr = new TableRow(this);
                tr.LayoutParameters=layoutParams2;
                name.Text = eventList[i-1].title;
                date.Text = eventList[i-1].date;
                tr.AddView(date);
                tr.AddView(name);
                tl1.AddView(tr, i);
            }

【问题讨论】:

  • 我的解决方案对您有用吗?如果是,请您接受(点击此答案左上角的☑️),以便我们可以帮助更多有相同问题的人:)。

标签: c# xamarin tablelayout


【解决方案1】:

TableRow 应该使用TableLayout.LayoutParams

TableRow 内的视图应使用TableRow.LayoutParams

在您的代码中,应该是这样的:

    for (int i = 0; i <= 10; i++)
    {

        TableLayout.LayoutParams layoutParams = new TableLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.WrapContent);

        TableRow.LayoutParams layoutParams2 = new TableRow.LayoutParams(LayoutParams.MatchParent, LayoutParams.WrapContent);

        TextView date = new TextView(this);

        //Use TableRow
        date.LayoutParameters = layoutParams2;

        date.SetBackgroundColor(Color.ParseColor("#FFFFC0"));
        date.SetTextSize(Android.Util.ComplexUnitType.Px, (float)30.0);
        date.SetTextColor(Color.Black);
        date.SetPadding(5, 5, 5, 5);

        TextView name = new TextView(this);

        //Use TableRow
        name.LayoutParameters = layoutParams2;

        name.SetBackgroundColor(Color.ParseColor("#FFFFC0"));
        name.SetTextColor(Color.Black);
        name.SetTextSize(Android.Util.ComplexUnitType.Px, (float)30.0);
        name.SetPadding(5, 5, 5, 5);
        TableRow tr = new TableRow(this);

        //Use TableLayout
        tr.LayoutParameters = layoutParams;

        name.Text = "title";
        date.Text = "date";
        tr.AddView(date);
        tr.AddView(name);
        tl1.AddView(tr, i);
    }

【讨论】:

    猜你喜欢
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多