由于没有工作,我的意思是我无法在ViewHolder中看到它。 getWidth()返回值0.0。
编辑 - 我无法看到视图的原因是获取宽度的原始调用返回0。
我有一个视图,用于显示某人所在的特定课程的范围,设置如下:
<View
android:id="@+id/timerBar"
android:layout_width="match_parent"
android:layout_height="4dp"
android:background="@color/colorPrimaryDark" />
在onBindViewHolder方法中,我正在执行以下操作 -
获取新宽度和当前布局
int width = (int) (holder.timerBar.getLayoutParams().width * ((float)time-start)/((float)end-start));
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) holder.timerBar.getLayoutParams();
设置布局的宽度,并设置视图的布局 -
holder.timerBar.setLayoutParams(lp);
holder.timerBar.requestLayout();
调用requestLayout()显然会导致视图刷新,但它对我没用。
有人可以建议如何在recyclerview视图中获取视图以更改其宽度吗?
感谢您的帮助。
答案 0 :(得分:2)
除非您知道自己在做什么,否则请不要手动设置布局参数。 在recyclerview中测量和布局对象是不同的,因为它是由布局管理器完成的,你不应该干扰它。
在您的情况下,为了显示进度,您应该使用ProgressBar
和/或使用带裁剪的绘图或其他方式来显示进度(有一个不同的批次选项)。
然后,您只需致电progress.setProgress(50);
即可完成,而不会篡改您的布局和视图。