【问题标题】:ImageView: Drawable and padding?ImageView:可绘制和填充?
【发布时间】:2013-09-04 18:03:50
【问题描述】:

我编写了一个自定义可绘制对象并将其显示在 ImageView 中。

如果我向 ImageView 添加填充,我的可绘制对象会过度绘制填充并填充整个图像视图。

我在 drawable 中所做的是:

@Override
public void setBounds(int left, int top, int right, int bottom) {
    super.setBounds(left, top, right, bottom);

    Rect r = new Rect();

    getPadding(r);

    Log.d("Test", "padding " + r.toShortString());

    mWidth = right - left;
    mHeight = bottom - top;

}

在 Drawables 的绘制方法中,我绘制了一个位图来填充 mWidth 和 mHeight。

那么如何计算填充? 获取填充(r);即使 ImageView 有一些填充,也总是返回 0,0,0,0 值。

知道如何解决这个问题吗?

【问题讨论】:

    标签: android android-imageview padding android-drawable


    【解决方案1】:

    getPadding() 只能在 Imageview 加载后调用。添加一个 ViewTreeObserver 以在 imageview 加载后获取填充。

    【讨论】:

    • 我重写了 Drawable.setBounds() 而不是 ImageView.setBounds(),还是你的意思不同?