gpt4 book ai didi

android - drawRect单元问题android

转载 作者:行者123 更新时间:2023-11-29 02:11:39 26 4
gpt4 key购买 nike

我正在尝试跟踪扩展 LinearLayout 类中子 TextView 的边界 Rect 我正在使用 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 tv 下方绘制一个框。它适用于我的 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 要么在 3.0 之前损坏,要么没有返回我所期望的。我发现我可以改为这样做。

TextView tv = (TextView)findViewById(R.id.textView1);
Rect bounds = new Rect(tv.getLeft(), tv.getTop(), tv.getRight(), tv.getBottom());

关于android - drawRect单元问题android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6922074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com