我正在尝试在运行时设置一个布局,该布局与屏幕左侧的按钮相交,然后是右侧。我有一个按钮字符串的数组列表,它迭代,为每个按钮创建一个按钮,然后应用一些样式。几乎所有的造型都有效,除了我用来将它们推到屏幕一侧的边距不能正确交替。我试图从左侧或右侧进行边距推动,但似乎按钮只停留在一列内。
首先是代码:
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++;
}
以下是它如何出现的截图:
答案 0 :(得分:2)
由于我不知道的某些原因,重用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));