我正在尝试在Android中动态添加按钮,我使用的方法只显示循环的最后一个按钮。
以下是我正在使用的代码:
for(int i = 0; i < SavedProducts.brands.size(); i++){
Button btn = new Button(getActivity());
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 250);
layoutParams.setMargins(80, 60, 80, 0);
btn.setLayoutParams(layoutParams);
btn.setText(SavedProducts.brands.get(i).Name);
Log.e("DISPLAYING NAME", SavedProducts.brands.get(i).Name+"");
brandsList.addView(btn);
}
使用此代码时,我只在屏幕顶部显示一个按钮。我猜他们正在堆叠在彼此之上。如何让按钮看起来堆叠在一起?
感谢。
在此上下文中的brandsList是RelativeLayout。 SavedProducts对象已正确填充。
编辑:我不确定它是否有所作为,但我试图在片段
中做到这一点答案 0 :(得分:0)
我的问题是在这一行设置边距:
layoutParams.setMargins(80, 60, 80, 0);
此函数的参数是setMargins(左边距,上边距,右边距,下边距)。
虽然我是动态添加按钮,但我没有更改每个按钮的余量,所以它们都是从我想要添加它们的视图顶部出现60像素。
为了解决这个问题,我制作了一个新的变量
int topMargin = i * 270;
由于每个按钮的高度为250,因此每个按钮之间留有20像素的边距。
然后我将我的新变量放入setMargins()函数:
layoutParams.setMargins(80, topMargin, 80, 0);
这使按钮看起来像我想要的那样在彼此之下。
答案 1 :(得分:0)
在循环外创建按钮数组,然后将其添加到布局中。
Button btn[] =new Button[SavedProducts.brands.size()];
for(int i = 0; i < SavedProducts.brands.size(); i++){
btn[i]=new Button () ;
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 250);
layoutParams.setMargins(80, 60, 80, 0);
btn[i].setLayoutParams(layoutParams);
btn[i].setText(SavedProducts.brands.get(i).Name);
Log.e("DISPLAYING NAME", SavedProducts.brands.get(i).Name+"");
brandsList.addView(btn[i] );
}