Android RecyclerView:使用“match_parent”获取View的宽度/高度

时间:2017-05-30 21:39:10

标签: android layoutparams

我有一些带有一些视图的布局,我需要根据一些参数来改变大小,这取决于View的宽度。宽度设置为“match_parent”。因此,当我尝试获得宽度时,它返回0.这是我到目前为止所尝试的:

  1. mask.getWidth();
  2. mask.getLayoutParams().width
  3. ViewTreeObserver vto = mask.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { mask.getViewTreeObserver().removeGlobalOnLayoutListener(this); int width = mask.getMeasuredWidth(); } });
  4. 所以我的问题是如何在这种情况下获得宽度? 谢谢。

1 个答案:

答案 0 :(得分:1)

在挖掘之后,我找到了一个解决我的问题的解决方案,但有一个我还没有解决的重大问题。我们可以使用每个View都有的方法post(),并将Runnable添加到消息队列中。因此,据我所知,在方法post()中完全测量View后,我们可以获得我们需要的维度:

 holder.button.post(new Runnable() {
                @Override
                public void run() {
                    width = holder.button.getWidth();
                }
            });

然而,问题在于RecyclerView不会等到这个视图被测量为,并且将进入下一行,并且不会根据您期望的度量更新行。 如果无论如何都有办法解决这个问题,请发表评论。谢谢。