簡體   English   中英

Android-將項目添加到滾動視圖並以編程方式滾動

[英]Android - Adding an item to a scroll view and scroll programmatically

我有一個空的滾動視圖。 我用充氣機創建一個文本視圖,以編程方式將其添加到ScrollView中,然后執行以下操作:

rsView.smoothScrollBy((viewLeft + viewWidth / 2) - center, 0);

但是viewLeft和viewWidth為0,因為尚未測量視圖。 關於如何使其正確滾動視圖的任何建議?

在添加了它之后,將smoothScrollBy()調用移至Runnable並將其發布到新的TextView的處理程序中,這將使其在布局后運行。 例如:

viewGroup.addView(childView);
childView.post(new Runnable() {
        @Override
        public void run() {
            rsView.smoothScrollBy((childView.getLeft() + childView.getWidth() / 2) - center, 0);
        }
    }
);

我不確定您如何計算center ,但是如果它取決於新TextView的尺寸,則還需要將計算移到Runnable

在這篇文章中: View的getWidth()和getHeight()返回0,您有很多不錯的選擇來解決此問題。 特別是我用這個:

收聽繪圖/布局事件:ViewTreeObserver

一個ViewTreeObserver被激發用於不同的繪圖事件。 通常,OnGlobalLayoutListener是獲取度量所需的,因此將在布局階段之后調用偵聽器中的代碼,因此可以進行測量:

view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            rsView.smoothScrollBy((viewLeft + viewWidth / 2) - center, 0);
        }
    });

暫無
暫無

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

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