簡體   English   中英

同步片段中的滾動視圖(相同的滾動速度)

[英]Synchronize scrollviews in fragment (same scroll speed)

我決定使用固定列的表格布局進行控制(在左側)..因此我基於RelativeLayout創建了自己的類。 該類包含兩個scrollViews:_scrollViewLeft和_scrollViewRight(它們每個都包含tableLayout)。 一切正常(數據存在,列和行對齊,表高度相同),但滾動一個scrollView不會滾動另一個。 我不知道問題出在控件是否位於ViewPager的Fragment中。

這是scrollView類,應該可以同步兩個

private class MatrixScrollView : ScrollView
{
        public MatrixScrollView(Context context, IAttributeSet attrs) : base(context, attrs)
        {
        }

        protected override void OnScrollChanged(int l, int t, int oldl, int oldt)
        {
            if (Tag.ToString() == "scrollViewLeft")
                _scrollViewRight.ScrollTo(0, t);
            else
                _scrollViewLeft.ScrollTo(0, t);
        }
    }

只是為了清楚起見:如果您沿某個方向滾動scrollViewLeft線_scrollViewRight.ScrollTo(0,t); 執行-但不執行任何操作_scrollViewRight保持原狀態。

我的控制基於

這可能與ViewPager或生命周期和Tag屬性有些混淆。 所以我通過了已連接的scrollView的實例-並且它起作用了。

public class MatrixScrollView : ScrollView 
{
    public MatrixScrollView(Context context, IAttributeSet attrs) : base(context, attrs)
    {
        VerticalScrollBarEnabled = false;
        OverScrollMode = OverScrollMode.Never;
    }

    public void SetConnectedScrollView(MatrixScrollView connectedScrollView)
    {
        _connectedScrollView = connectedScrollView;
    }

    MatrixScrollView _connectedScrollView;


    bool _isTouchScroll = true;

    public void ScrollThisView(int l, int t)
    {
        _isTouchScroll = false;

        ScrollTo(l, t);

        _isTouchScroll = true;
    }

    protected  override void OnScrollChanged(int l, int t, int oldl, int oldt)
    {
        base.OnScrollChanged (l, t, oldl, oldt);

        if(_isTouchScroll)
            _connectedScrollView.ScrollThisView(l, t);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM