Android RecyclerView:使用 "match_parent" 获得 width/height 的视图

Android RecyclerView: getting width/height of View with "match_parent"

我有一个包含一些视图的布局,我需要根据一些参数更改大小,这些参数取决于视图的宽度。宽度设置为 "match_parent"。所以当我尝试获得它的宽度时 returns 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(); } });

所以我的问题是在这种情况下如何获得宽度? 谢谢。

在四处挖掘之后,我找到了一个解决方案来回答我的问题,但有一个主要问题我还没有解决。我们可以使用每个 View 都有的方法 post() 并向消息队列添加一个 Runnable。据我了解,在方法 post() 中完全测量 View 后会发生什么,我们可以获得我们需要的尺寸,如下所示:

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

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