我正在与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;
}
但我无法获得手机上看到的行的索引。
答案 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)
{
}
}