Android 如何使列表视图可滚动,直到最后一个元素位于屏幕顶部
我正在开发一个需要显示日历日程的应用程序,很像本机日历中的日程。我有一个显示不同事件的列表视图(注意:在问题上下文中,事件是我系统的实体)。我想在此屏幕上提供一个“今日”按钮。当用户单击此按钮时,事件应该滚动,直到当前日程安排的第一个事件出现在屏幕顶部。当我从今天开始只安排了几个活动时,问题就出现了——太少了,以至于不能填满整个屏幕。然后列表视图只是滚动,直到日历中的最后一个事件位于底部。这通常意味着今天的第一场比赛没有达到预期的效果 有什么建议可以做到这一点吗?我曾想过在末尾添加一些空白元素,但这似乎是一个丑陋的解决方法,而且它需要特殊的设备特定计算,以告诉我要插入多少元素 编辑:Android 如何使列表视图可滚动,直到最后一个元素位于屏幕顶部,android,android-listview,android-scroll,Android,Android Listview,Android Scroll,我正在开发一个需要显示日历日程的应用程序,很像本机日历中的日程。我有一个显示不同事件的列表视图(注意:在问题上下文中,事件是我系统的实体)。我想在此屏幕上提供一个“今日”按钮。当用户单击此按钮时,事件应该滚动,直到当前日程安排的第一个事件出现在屏幕顶部。当我从今天开始只安排了几个活动时,问题就出现了——太少了,以至于不能填满整个屏幕。然后列表视图只是滚动,直到日历中的最后一个事件位于底部。这通常意味着今天的第一场比赛没有达到预期的效果 有什么建议可以做到这一点吗?我曾想过在末尾添加一些空白元素,
根据注释中的要求添加一些代码
实际上,我不确定这段代码是否会让任何人感到惊讶,但是:
public void onTodayClicked(View target) {
// calculate the indexOf. It works and is not related to the question
if (indexOf >= 0) {
ListView list = (ListView) findViewById(R.id.events_list_view);
list.setSelection(indexOf);
}
}
我不确定布局定义对于帮助回答问题是否重要,但如果您认为重要,我也可以添加它。您可以通过两种方式实现这一点:
如果您给这些方法一个位置,即列表中的第一个,它们将很好地工作。(根据您的描述,我认为您可能计算了最后一个职位,但我不能确定)。谢谢您的回答。然而,我没有在我的处置设备支持超过姜饼(Api 9-10级)。也许稍后我会在模拟器中测试您的建议,以便为将来的读者验证您的建议,但这肯定不能解决我的问题。由于你自愿尝试为旧版本找出一些东西,而我自己也没有什么想法,如果你能进一步帮助我,我将不胜感激。我刚刚有机会测试一下你的建议。遗憾的是,你似乎误解了我的要求。你提出的方法确实可以滚动,但我已经有了。我的问题是:假设我有很多项目,比如说1000项。如果我说滚动到第40个,一切都很好,它会显示在屏幕顶部。但是,如果我说“滚动到9999”,它只会滚动直到该项目可见,而不会将其放在顶部。原因是线性布局后不存在空白(可能?)。我需要把每件东西都放在上面。哦,好吧,我误解了。然而,不幸的是,使用ListView无法完成您想要做的事情。您可以做的是,计算必要的高度(使用getFirstVisiblePosition()、getChildAtIndex()和getTop()方法),然后在列表末尾插入一行。但这并不容易,因为你必须处理好几件事。你现在如何进行滚动?你能发一些代码吗?