[英]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.