簡體   English   中英

在Android ListView中以編程方式選擇ListItem時的最小滾動量

[英]Minimum scroll amount when programmatically selecting ListItem in android ListView

引用這個問題: android listview中的滾動如何工作?

從狀態2更改為狀態3時,單擊的列表項的大小會增加,以顯示更多信息。 如果單擊的項目是屏幕上的最后一個項目,則擴展的Listitem不會完全可見,因為新內容在屏幕底部流出。

我的當前解決方案是,如果單擊了最后一個可見的列表項,則調用“ setSelection(index)”。 結果是將選擇帶到屏幕頂部。 這很煩人,因為列表項從下到上移動。

有辦法避免這種情況嗎? 這意味着,有什么要讓listview知道的,即應該只滾動最小數量的像素,以便clickeditem完全可見嗎? 還是我自己編程此功能?

將自定義OnItemClickListener添加到ListView。 像這樣實現OnItemClickListener.onItemClick:

public void onItemClick(final AdapterView<?> parent, final View view,
        int position, long id) {
    View hiddenContent = view.findViewById(R.id.hiddenContent);
    hiddenContent.setVisibility(View.VISIBLE);

    // At this point the layout hasn't be redone and you don't have reliable 
    // measurements on the view.  It would be nice to do something after the view
    // has gone through another layout
    view.post(new Runnable() {
        public void run() {
            Rect r = new Rect();
            view.getDrawingRect(r);
            parent.requestChildRectangleOnScreen(view, r, false);
        }
    });
}

每當您單擊列表項以顯示隱藏的內容時,ListView控件都會繼續進行,並且需要進行任何滾動(如果不需要滾動,則無需滾動)以完全顯示該行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM