Xamarin拉下搜索栏

时间:2017-06-11 14:42:43

标签: android listview xamarin renderer

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

我为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;
        }

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

1 个答案:

答案 0 :(得分: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)
    {
    }
}