Android RecyclerView:使用“获取视图的宽度/高度”;匹配“家长”;
我有一个布局,其中有一些视图,我需要根据一些参数改变大小,这些参数取决于视图的宽度。宽度设置为“匹配父项”。因此,当我尝试获取宽度时,它返回0。以下是我迄今为止所尝试的:Android RecyclerView:使用“获取视图的宽度/高度”;匹配“家长”;,android,layoutparams,Android,Layoutparams,我有一个布局,其中有一些视图,我需要根据一些参数改变大小,这些参数取决于视图的宽度。宽度设置为“匹配父项”。因此,当我尝试获取宽度时,它返回0。以下是我迄今为止所尝试的: mask.getWidth() mask.getLayoutParams().width ViewTreeObserver vto=mask.getViewTreeObserver(); vto.addOnGlobalLayoutListener(新的ViewTreeObserver.OnGlobalLayoutListene
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不会等到该视图被度量为,并将转到下一行,并且不会根据您期望的度量更新行。
如果无论如何有办法解决这个问题,请留下评论。多谢各位