[英]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.