Android动态添加多个按钮

时间:2018-03-29 08:41:55

标签: java android

我正在尝试在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对象已正确填充。

编辑:我不确定它是否有所作为,但我试图在片段

中做到这一点

2 个答案:

答案 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] );
}