如何获取View的内容大小

时间:2012-03-29 14:55:18

标签: android android-widget

我有一个派生自ImageView的课程。在其onDraw方法覆盖中,我需要将视图的内容复制到位图中。副本必须包含整个内容,而不仅仅是可见部分。

为了实现这一点,我创建了一个位图并调用super.onDraw传递此位图的画布作为参数。然后,我将生成的位图绘制到onDraw传递的画布上。代码如下。

我的问题是我的位图应该有多大?目前,我使用getWidth()getHeight()作为位图的尺寸。但这不起作用,因为它返回视图大小,而不是内容大小。我正在寻找一种方法来根据视图scaleType调整drawable的大小来获取内容的大小。

drawable的大小不起作用,因为drawable可能与内容维度不同。

    @Override
    public void onDraw(Canvas canvas)
    {
        if (_bitmap == null)
        {
            final int w = getWidth();
            final int h = getHeight();
_bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); _canvas = new Canvas(_bitmap);
super.onDraw(_canvas); } canvas.drawBitmap(_bitmap, 0, 0, null); }

2 个答案:

答案 0 :(得分:0)

这样,您可以在测量和布局后获得尺寸。您应该获得基础Drawable并调用getIntrinsicWidth我猜

答案 1 :(得分:0)

你有没有看过

getDrawingCache(布尔autoScale)

返回缓存此视图图形的位图。

将autoScale设置为true。