0
你好,我有一個RecyclerView
,我用HorizontalScrollView in children of the
RecyclerView`。當我滾動一個時,我需要滾動它們。任何人都可以告訴我如何做到這一點,謝謝!RecyclerView孩子的,如何連接2個或多個視圖
你好,我有一個RecyclerView
,我用HorizontalScrollView in children of the
RecyclerView`。當我滾動一個時,我需要滾動它們。任何人都可以告訴我如何做到這一點,謝謝!RecyclerView孩子的,如何連接2個或多個視圖
我會假設你正在做的相似,我做了什麼,你有某種表格視圖和HorizontalScrollView
s爲所有相同的寬度。
這是我做的:
首先,我做了一個自定義的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
的I添加一個偵聽器,將所有視圖設置爲相同的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
的引用來訪問所有當前列表項。
此代碼出現了一些問題,當你刷一個圖,然後刷卡另一種觀點認爲,而一切都還沒有從第一刷卡移動,事情會變得不同步。但這是一個讓你開始朝着積極方向發展的基本理念。
我不明白什麼查看您設置OnScrollListener –
'view'在這種情況下是之前列出的特殊'HorizontalScrollView'類。這是爲您的ViewHolder創建的視圖。當你設置你的'ViewHolder'時,你在這個視圖上設置了監聽器。如果我把它叫做'itemView'就好像它在'ViewHolder'構造函數中,那麼這可能會更有意義。 –