如何获取我已添加到Android中的TableRow的RelativeLayout的宽度

时间:2014-06-17 14:47:23

标签: android gridview

我正在处理代码片段,它使用组件TableLayout,Horizo​​ntalScrollView和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中,这样我就可以定义参数,我可以将这些书放在一行中。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:0)

有很多方法,如:

  1. view.getLeft(); //返回视图相对于其父
  2. 的左侧位置
  3. view.getRight(); //返回视图相对于其父视图的正确位置,顶部和底部
  4. view.getWidth()
  5. view.getHeight()

答案 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中获取其宽度和高度..