您好我有RecyclerView
,我使用HorizontalScrollView in children of the
RecyclerView`。当我滚动一个时,我需要滚动所有这些。任何人都可以告诉我如何做到这一点,谢谢!
答案 0 :(得分:0)
我将假设你正在做类似于我所做的事情,你有某种表格视图,而HorizontalScrollView
的宽度都相同。
我就这样做了:
首先,我对HorizontalScrollView
进行了自定义,以便在浏览视图时获取事件通知:
public class HorizontalScrollView extends android.widget.HorizontalScrollView {
private OnScrollListener mListener;
public HorizontalScrollView(Context context) {
super(context);
}
public HorizontalScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public HorizontalScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void setOnScrollListener(OnScrollListener listener) {
mListener = listener;
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (mListener != null) {
mListener.onScrollChanged(this, l);
}
}
public interface OnScrollListener {
public void onScrollChanged(View view, int scrollX);
}
}
然后当我创建ViewHolder
时,我添加了一个将所有视图设置为相同scrollX的侦听器:
view.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollChanged(View scrollView, int scrollX) {
for (int i = 0; i < recyclerView.getChildCount(); i++) {
View child = recyclerView.getChildAt(i);
if (child instanceof HorizontalScrollView && child != scrollView) {
HorizontalScrollView scrollView2 = (HorizontalScrollView) child;
if (scrollView2.getScrollX() != scrollX) {
scrollView2.setScrollX(scrollX);
}
}
}
}
});
此代码仅供参考;不要指望复制/粘贴它并让它工作。
我假设您的ViewHolder
可以获得对您RecyclerView
的引用,以访问所有当前列表项。
这段代码存在一些问题,当你刷一个视图然后刷掉另一个视图时,一切仍然从第一次滑动移动,事情可能会失去同步。但这是一个让你从积极的方向着手的基本想法。