Я пытаюсь отследить ограничивающую Rect
для дочернего элемента TextView
внутри класса, расширяющего LinearLayout
Я использую View.getGlobalVisibleRect(Rect)
для того, чтобы получить ограничивающий прямоугольник TextView относительно его родителя. Он отлично работает на некоторых устройствах, но на других телефонах, очевидно, возникает проблема с устройством. Простой пример того, что я вижу:
//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());
Но ни один из них, похоже, не переводит верхнюю часть окна туда, где она должна быть. Буду очень признателен за любые отзывы и советы.
Спасибо!