我正在处理代码片段,它使用组件TableLayout,HorizontalScrollView和RelativeLayout生成书架视图。我有一个默认封面我必须在封面上放置书的标题并形成网格视图(书架)。
大致代码看起来像这样
bitmapObj = BitmapFactory.decodeResource(getResources(), R.drawable.bookshelf_background_image);
tableLayoutObj = (TableLayout) findViewById(R.id.tblLayout);
tableRowObj = new TableRow(this);
for(int i = 0; i < numberOfRows; i++)
{
horizontalScrollObj = new HorizontalScrollView(this
for(int j = 0; j < numberOfColumns; j++)
{
relativeLayoutObj =(RelativeLayout) inflaterObj.inflate(R.layout.bookshelf_relative_layout, null);
tableRowObj.addView(relativeLayoutObj);
}
}
我想知道的是,我想获得相关布局的宽度,我将其添加到TableRob obj中,这样我就可以定义参数,我可以将这些书放在一行中。
有人可以帮我吗?
答案 0 :(得分:0)
有很多方法,如:
答案 1 :(得分:0)
我知道它已经很晚了,但我自己也需要类似你的问题,我想出了这个解决方案。 (它没有返回0,我查了一下)
ViewTreeObserver viewTreeObserver = YOURVIEW.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
YOURVIEW.getViewTreeObserver().removeOnGlobalLayoutListener(this);
viewWidth = YOURVIEW.getWidth();
viewHeight = YOURVIEW.getHeight();
}
});
}
答案 2 :(得分:0)
可能在执行代码时,您的视图尚未绘制,因此其宽度和高度为零。
您可以使用view.post(Runnable)
并在Runnable
中获取其宽度和高度..