以编程方式设置边距不会让我每次都重新分配值
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));
我正在尝试在运行时设置一个布局,交替在屏幕左侧有一个按钮,然后在右侧有一个按钮。我有一个按钮字符串的 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));