我有一个Android ListView
,想要滚动到一个特定的位置。使用list.SetSelection(index)
或list.SmoothScrollToPosition(index)
几乎可以满足我的需求。
但是假设我有一个很长的列表(比屏幕上显示的长得多),我在中间某处选择一个索引。上述两种方法都将滚动列表,使index
指定的项目位于页面顶部。我想滚动,以便index
指定的项目位于页面的底部。
到目前为止我提出的最好的是一个丑陋的kludge,我等待ListView
的布局完成,测量列表的高度和我的项目的高度,然后使用{{ 1}},因此:
list.LayoutChange += (sender, evt) => { list.SmoothScrollToPositionFromTop(index, list.Height - list.GetChildAt(0).Height); };
请注意,我的所有行都是相同的高度,所以我不必担心获得特定孩子的身高。
另请注意,我正在使用Xamarin.Android,因此我的事件处理程序语法与您在普通旧Java应用程序中使用的语法略有不同。
虽然上述证明是有效的,但似乎必须有更清洁,更清晰,更脆弱,更易于维护的方法......