2017-06-11 62 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) 
    { 
    } 
}