在相对布局或扩展线性布局中动态添加按钮(Android)

4
我希望根据按钮和屏幕宽度动态地将按钮添加到相对布局中,如图所示。按钮数量不固定,按钮的宽度取决于设置给按钮的文本。enter image description here 我尝试使用以下代码实现,但并没有按照我的要求正常工作。 有人能帮我吗?请通过此帮助我。
RelativeLayout layout = (RelativeLayout) findViewById(R.id.genre_layout);
                    for(int i=0; i < genreList.size(); i++){

                        Button btn = new Button(MovieDetailsActivity.this);

                        btn.setText(genreList.get(i).getGenreName());
                        btn.setPadding(15, 5, 15, 5);
                        btn.setBackgroundColor(Color.parseColor("#FFFFFF"));
                        btn.setBackgroundColor(Color.parseColor("#80333333"));


                        LayoutParams param = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                        param.setMargins(5, 5, 5, 5);

                        if (i != 0){

                            int prevId = genreList.get(i).getGenreId();
                            param.addRule(RelativeLayout.RIGHT_OF, prevId);
                        }
                        btn.setLayoutParams(param);
                        btn.setId(genreList.get(i).getGenreId());

                        layout.addView(btn);

                    }

2
使用FlowLayout实现Android布局。 - pskink
5个回答

0

试试这个

Display display=getWindowManager().getDefaultDisplay();
    int width=display.getWidth();
    btn.setWidth(width);

或者如果你有两个按钮,那么执行

Display display=getWindowManager().getDefaultDisplay();
    int width=display.getWidth();
    btn1.setWidth(width/2);
    btn2.seTwidth(width/2);

更新

LinearLayout.LayoutParams paramz = new LinearLayout.LayoutParams(
                             LayoutParams.MATCH_PARENT,
                             0dp, 1.0f);

然后btn.setLayoutParams(paramz);


我将拥有多少个按钮是不确定的。 - AndyN

0

尝试在RelativeLayout中添加动态按钮的方法如下:

 RelativeLayout layout = (RelativeLayout)findViewById(R.id.slidingDrawerContent);
 RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT );


for (int i=0; i<4; i++) {
     Button btn = new Button(this);
     btn.setId(i);
     btn.setText("some_text");

    // lp.addRule(RelativeLayout.RIGHT_OF, <Id>);

     layout.addView(tv2, lp); 
}

0
我建议您按照您的问题使用LinearLayout并设置Weight

LinearLayout


0

0

我通过使用FlowLayout解决了我的问题。 这里提供了示例代码和参考资料here 它很容易使用。感谢大家的帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接