以编程方式设置边距不会让我每次都重新分配值

Setting margins programmatically wont let me reassign the value each time

我正在尝试在运行时设置一个布局,交替在屏幕左侧有一个按钮,然后在右侧有一个按钮。我有一个按钮字符串的 arrayList,它遍历,为每个按钮创建一个按钮,然后应用一些样式。几乎所有的样式都有效,除了我用来将它们推到屏幕一侧的边距没有正确交替。我正在尝试从左侧或右侧推动边距,但按钮似乎只停留在一列内。

首先是代码:

        LayoutParams noteStyle = new LayoutParams((int) getResources().getDimension(R.dimen.sticky_note_height),
                                              (int) getResources().getDimension(R.dimen.sticky_note_width));
    int margin = (int) getResources().getDimension(R.dimen.margin_huge);
    layout = (LinearLayout) findViewById(R.id.note_layout);
    int i = 0;
    for (String note : notes){
        Button btnTag;
        if (i % 2 == 0){
            btnTag = (Button) getLayoutInflater().inflate(R.layout.sticky_note_right, null);
            noteStyle.setMargins(margin,0,0,0);
        } else {
            btnTag = (Button) getLayoutInflater().inflate(R.layout.sticky_note_left, null);
            noteStyle.setMargins(0,0,margin,0);
        }
        btnTag.setLayoutParams(noteStyle);
        btnTag.setText(note);
        btnTag.setId(i);
        layout.addView(btnTag);
        ((Button) findViewById(i)).setOnClickListener(this);
        i++;
    }

下面是结果截图:

出于某种我不知道的原因,重复使用 LayoutParams 会导致愚蠢的结果。每次需要时实例化它们可以帮助解决这个问题。

这意味着将它们放在 for loop 中,在这种情况下

for (String note : notes) {
    LayoutParams noteStyle = new LayoutParams((int) getResources().getDimension(R.dimen.sticky_note_height),
              (int) getResources().getDimension(R.dimen.sticky_note_width));