Xamarin在c#中设置元素权重

时间:2017-06-16 09:56:55

标签: c# android android-layout xamarin

我正在开发一个基于Xamarin的新项目。我必须在代码中动态管理活动的元素计数,但是我在设置元素权重方面存在问题。作为布局的一个例子,我希望:

activity

第一行以xaml为例。其他行是我通过代码添加新项目的结果,尽管我在c#代码中创建的标记等于xaml行标记。

这是c#代码:

LinearLayout contentView = FindViewById<LinearLayout>(Resource.Id.ATMListContentLayout);

foreach (var item in BitcoinQueryInfo.ATMList.OrderBy(x => x.id))
{
    LinearLayout row = new LinearLayout(this)
            {
                WeightSum = 100,
                Orientation = Orientation.Horizontal
            };
    LinearLayout.LayoutParams paramsRow = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent);
    row.LayoutParameters = paramsRow;

    TextView text = new TextView(this)
            {
                Text = item.id + " " + item.address,
                TextSize = 20,
            };
    text.SetTextColor(Color.ParseColor("#000000"));

    LinearLayout.LayoutParams paramsText = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WrapContent);
    paramsText.Weight = 70;
    text.LayoutParameters = paramsText;

    Button button = new Button(this)
            {
                Text = "Sell BTC",
                TextSize = 20
            };
    LinearLayout.LayoutParams paramsBtn = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WrapContent);
    paramsBtn.Weight = 30;
    text.LayoutParameters = paramsBtn;

    button.SetBackgroundResource(Resource.Color.orange);
    button.SetTextColor(Color.ParseColor("#000000"));

    row.AddView(text);
    row.AddView(button);
    contentView.AddView(row);

    button.Click += delegate
             {
                 BitcoinQueryInfo.selectedATMId = item.id;
                 var newInstance = new Intent(this, typeof(BTCAmountScreen));
                 StartActivity(newInstance);
             };
}

我做错了什么,如何为我在代码中添加的每一行设置元素的权重?

1 个答案:

答案 0 :(得分:1)

WeightSumWeightfloat值。

你必须做出选择:

1。删除WeightSum = 100

来自de docs

  

定义最大重量总和。如果未指定,则总和通过计算   添加所有子项的layout_weight。这可以用于   实例给予单个孩子50%的总可用空间   给它一个layout_weight为0.5并将weightSum设置为1.0。

2。制作WeightSum = 1.0fparamsText.Weight = 0.7f;paramsBtn.Weight = 0.3f;