Android ListView:如何通过索引设置最后一个可见项?

时间:2018-03-15 17:56:05

标签: android listview xamarin.android

我有一个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应用程序中使用的语法略有不同。

虽然上述证明是有效的,但似乎必须有更清洁,更清晰,更脆弱,更易于维护的方法......

0 个答案:

没有答案