ScrollView中必須要再包一個「ViewGroup」才有辦法再放入其他View。(它只能容納一個ChildView。)
所以「(特定View)在ScrollView中的位置」其實是「(特定View)在此ViewGroup中的位置」。
但一般尋找「View在螢幕中絕對座標」的辦法無法用在此處。
以縱軸座標的ScrollView來說,「位置」其實是指「這個View距離ViewGroup上方邊界的距離」。
所以要使用View中的功能:getTop(),來取得.......
但這個功能取得的是View跟最接近的ViewGroup的距離。也就是說如果ScrollView和View之間不只一層ViewGroup,而是有多層ViewGroup,(為了做出複雜的版型,)那就必須要用一個迴圈將它們的「getTop()」通通取出來作加總...
舉例.....
假設ScrollView和View之間有ViewGroup(0)、ViewGroup(1)、ViewGroup(2)、ViewGroup(3),最後才是View,....如果已經可以清楚知道ViewGroup的數目,那就好辦,但如果不知道...
要從View取ParentView,(這東西可以直接轉型成「View類別」,)然後再從ParentView取ParentView...直到取出來的ParentView是ScrollView為止。
每次的getTop記得都要累加起來,得到的數值才是畫面上、視覺上,這個View在ScrollView中的位置。
沒有留言:
張貼留言