[英]How to have a view draggable until it becomes full height then make it scrollable?
[英]How to make list view scrollable until the last element is on top of the screen
我正在開發一個需要顯示日歷議程的應用程序,就像本機日歷中的議程一樣。 我有一個列表視圖顯示不同的事件(注意:在問題的上下文中,事件是我的系統的實體)。 我想在這個屏幕上提供一個“今天”按鈕。 當用戶點擊此按鈕時,應該滾動事件,直到當前日期時間表的第一個事件位於屏幕頂部。 當我今天只安排了幾個事件時,問題就出現了 - 很少有人沒有填滿整個屏幕。 然后列表視圖只會滾動,直到日歷中的最后一個事件位於底部。 這通常意味着沒有實現將第一個今天的事件放在首位的預期效果。
有什么建議可以做到這一點? 我想到最后添加一些空白元素,但這似乎是丑陋的解決方法,而且它需要特殊的設備特定計算,它將告訴我要插入多少元素。
編輯 :
在評論中添加一些代碼請求
實際上我不確定這段代碼會讓任何人感到驚訝,但是:
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);
}
}
我不確定布局定義對於回答問題很重要,但如果您這么認為我也可以添加它。
您可以通過兩種方式實現這一目標:
使用smoothScroll方法更好,因為它實際上平滑過渡 - 這意味着它真正滾動到它。 唯一的缺點是它只能在API級別11之后才能使用。
setSelectionFromTop方法從API級別1開始工作,但它不是平滑滾動,而是跳轉到該行。
如果您不需要定位到屏幕頂部,只需查看行,您還可以使用smoothScrollToPosition,這是API級別8調用。
如果給這些方法提供位置,即列表中的FIRST ,它們將很好地工作。 (根據你的描述,我認為你可能會計算最后一個位置,但我不能確定)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.