2014-11-05 86 views
0

我想滾動到特定項目,具體取決於用戶點擊的位置。我所有的列表視圖都是不同的高度。請看下面的圖片。滾動ListView到點擊座標,如QQ

Example Image

因此,如果在列表項1,用戶點擊允許假設,所以它的底部應該滾動,直到softkeyboard的頂部。

項目和鍵盤的高度各不相同。我已嘗試getTopgetHeight,getMeasuredHeight,但迄今沒有任何工作。

回答

1

Distance Formula

主要的一點是要找到點擊UI,並在鍵盤頂部之間的距離。

這是距離公式。你可以用這個來實現你的功能。您需要

  • 點擊座標您的列表視圖項
  • 您的ListView項的高度

假設下面是你的ListView,正在單擊

int[] loc = new int[2]; 
lvItem_button.getLocationOnScreen(loc); 

  • 座標佈局底部的佈局,在中將您的活動標記爲,現在它將永遠處於鍵盤的頂部,當鍵盤打開時。

    以同樣的方式獲取它的座標。

    int[] cords= new int[2]; 
    keyboard_top_layout.getLocationOnScreen(cords); 
    
    
    double distance = Math.sqrt(Math.pow((cords[0] - loc[0]), 2) + Math.pow((cords[1] - loc[1]), 2)); 
    
    distance -= heightOfItem; //subtract height because we want to align bottom of item to top of keyboard 
    
    
    
    distance = Math.ceil(distance); 
    lvItem.smoothScrollBy((int) -distance, 500); //-distance because X is increasing at bottom and decreasing at top. 500 is delay in scrolling. so it's smooth scroll 
    

    全部完成:)

  • +0

    謝謝,這工作:) – 2014-11-05 02:45:07