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