如何动态添加不同的按钮

时间:2011-08-19 06:59:27

标签: android layout button dynamic

我有一个按钮(不同大小等)的数组,它们是从和xml文件(由我编写)配置的。我想在屏幕底部添加这些按钮,当按钮行结束时,只需启动一个新行并添加按钮,直到数组结束。我想提一下,我没有在xml文件中设置按钮的大小,所以我不知道从一开始的大小。另一个问题是,在我使用layout.addView(按钮)以编程方式将布局添加到布局之后或之前,方法button.getWidth()返回0,因为UI元素尚未在UI中绘制。我也覆盖了onLayout()方法,但仍然无法重绘按钮。

如果您有任何想法,请帮忙。 感谢

2 个答案:

答案 0 :(得分:0)

你可以使用重量属性使按钮具有相同的大小。在这种情况下,请确定连续需要多少个按钮,并使用for循环进行相应的操作。如果你需要宽度,你可以使用像

这样的东西

将此添加到您的onCreate

ViewTreeObserver vto        =   layout.getViewTreeObserver();
            vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    You should be able to get the width and height
                    over here.

                    layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                }
            });

答案 1 :(得分:0)

这就是我做的。我重写了包含按钮的布局的onMeasure()方法。

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int specSize =  MeasureSpec.getSize(widthMeasureSpec);
        this.width = specSize;

        specSize =  MeasureSpec.getSize(heightMeasureSpec);
        this.height = specSize;

        //now you can use the sizes before the layout is drawn
        this.webview.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT,this.height - this.menuBarHeight) );

        //don't forget for the parent method! 
        //but at the end, after the measures are done
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);   
    }