Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RecyclerView:使用“获取视图的宽度/高度”;匹配“家长”;_Android_Layoutparams - Fatal编程技术网

Android RecyclerView:使用“获取视图的宽度/高度”;匹配“家长”;

Android RecyclerView:使用“获取视图的宽度/高度”;匹配“家长”;,android,layoutparams,Android,Layoutparams,我有一个布局,其中有一些视图,我需要根据一些参数改变大小,这些参数取决于视图的宽度。宽度设置为“匹配父项”。因此,当我尝试获取宽度时,它返回0。以下是我迄今为止所尝试的: mask.getWidth() mask.getLayoutParams().width ViewTreeObserver vto=mask.getViewTreeObserver(); vto.addOnGlobalLayoutListener(新的ViewTreeObserver.OnGlobalLayoutListene

我有一个布局,其中有一些视图,我需要根据一些参数改变大小,这些参数取决于视图的宽度。宽度设置为“匹配父项”。因此,当我尝试获取宽度时,它返回0。以下是我迄今为止所尝试的:

  • mask.getWidth()
  • mask.getLayoutParams().width
  • ViewTreeObserver vto=mask.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(新的ViewTreeObserver.OnGlobalLayoutListener(){
    @凌驾
    公共图书馆{
    mask.getViewTreeObserver().RemoveGlobalOnlyOutliner(此文件);
    int width=mask.getMeasuredWidth();
    }
    });
  • 所以我的问题是,在这种情况下,如何获得宽度?
    谢谢。

    经过深入研究,我找到了一个解决方案,回答了我的问题,但有一个重大问题我还没有解决。我们可以使用每个视图都具有的方法
    post()
    ,并向消息队列添加一个Runnable。因此,据我所知,在方法
    post()
    中完全测量视图后,我们可以得到如下所需的尺寸:

     holder.button.post(new Runnable() {
                    @Override
                    public void run() {
                        width = holder.button.getWidth();
                    }
                });
    
    然而,这里的问题是,RecyclerView不会等到该视图被度量为,并将转到下一行,并且不会根据您期望的度量更新行。 如果无论如何有办法解决这个问题,请留下评论。多谢各位