2017-06-11 61 views
0

我正在与Xamarin一起开展VS 2015上的跨平台项目。 Android和iOS。 想要制作一个渲染器,当用户像Whatsapp一样向上滚动时,该渲染器将使搜索栏可见。Xamarin拉下搜索栏

我为Android创建了这样的渲染器。

protected override void OnElementChanged(ElementChangedEventArgs<ListView> e) 
     { 
      base.OnElementChanged(e); 
      if (Control == null) 
       return; 
      var tableView = Control as Android.Widget.ListView; 
      tableView.ScrollStateChanged += TableView_ScrollStateChanged; 
     } 

     private void TableView_ScrollStateChanged(object sender, Android.Widget.AbsListView.ScrollStateChangedEventArgs e) 
     { 
      var tableView = Control as Android.Widget.ListView; 
      var asdf = tableView.OverScrollMode; 
      var sss = tableView.ScrollIndicators; 
      //int asdf1 = tableView.MaxScrollAmount; 
      //int asdf2 = tableView.ScrollX; 
      //int asdf3 = tableView.ScrollY; 
     } 

但我无法得到在手机上看到的行的索引。

+0

您还没有问一个实际问题。 – Jason

+0

@Jason对不起,我正在继续写作。 – Guest

回答

0

但我无法获得在手机上看到的行的索引。

根据您的代码,我想您正在自定义TableView,并且您的问题是如果滚动到最后时如何获得通知。

然后你就可以例如像这样的代码:

public class MyTableViewRenderer : TableViewRenderer, IOnScrollListener 
{ 
    protected override void OnElementChanged(ElementChangedEventArgs<TableView> e) 
    { 
     base.OnElementChanged(e); 
     if (Control == null) 
      return; 
     var tableView = Control as Android.Widget.ListView; 
     tableView.SetOnScrollListener(this); 
    } 

    public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) 
    { 
     //if last item is shown. 
     if (firstVisibleItem + visibleItemCount == totalItemCount) 
      Log.Debug("item", totalItemCount.ToString()); 
    } 

    public void OnScrollStateChanged(AbsListView view, [GeneratedEnum] ScrollState scrollState) 
    { 
    } 
}