【问题标题】:Synchronize scrollviews in fragment (same scroll speed)同步片段中的滚动视图(相同的滚动速度)
【发布时间】:2016-02-09 17:32:50
【问题描述】:

我决定使用固定列(在左侧)制作类似于 tablelayout 的控件......所以我基于 RelativeLayout 创建了自己的类。该类包含两个滚动视图:_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 留在原来的位置。

我的控制是基于this

【问题讨论】:

  • 两个滚动视图的内容是否相同?
  • 不,它们有不同的表格布局,基于相同的来源。让我们说列表。所以行数是一样的,行的高度是一样的——所以tableLayouts的高度也是一样的。

标签: android android-fragments xamarin scrollview


【解决方案1】:

这可能与 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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多