我試圖跟蹤邊界Rect
的一個孩子TextView
我爲了得到TextView的邊框相對於其父使用View.getGlobalVisibleRect(Rect)
擴展LinearLayout
一個類裏面。它在某些設備上運行良好,但顯然在其他手機上出現某種單元問題。我所看到的簡單例子:什麼預期的drawRect單元問題的android
//Extended LinearLayout's onDraw
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
TextView tv = (TextView)findViewById(R.id.textView1);
Rect bounds = new Rect();
tv.getGlobalVisibleRect(bounds);
canvas.drawRect(bounds, myPaint);
}
是,它應該吸取TextView的電視下一個框。它在我的3.1平板電腦上運行,但在我的1.6和2.3手機上,它繪製了TextView下方的框。似乎我需要將邊界框的值轉換爲不同類型的像素單位,以便獲得我期望的一致結果。
問題是我不確定返回的Rect是否已經是DIP或標準像素。我曾嘗試做兩個:
bounds.top = TypedValue.complexToDimensionPixelSize(bounds.top, getContext().getResources().getDisplayMetrics());
和
bounds.top = TypedValue.COMPLEX_UNIT_DIP, bounds.top, getContext().getResources().getDisplayMetrics());
但是這些都似乎在箱頂被轉換到它應該是。我將不勝感激任何反饋或建議。
謝謝!
'getGlobalVisibleRect'返回絕對(根)座標。您必須通過視圖的座標來抵消它們,正如[文檔中所述](http://goo.gl/U6oVs) – MartinodF