自定义ImageView中没有填充效果

时间:2015-06-25 09:23:41

标签: android image imageview padding android-custom-view

我在向自定义ImageView分配填充值时出现问题。请注意,我没有延长ImageView,而是View

public class CustomImageView extends View

图像通过路径从资源文件夹加载。来源和目标 - RectonLayout(...)中计算,位图在onDraw(...)中分配。

好消息:显示图像; - )

坏消息:setPadding(...)分配填充值对图像没有影响(要解决的问题!)。我用#34; normal"测试了这个。 ImageView - 对象和它按预期工作。但不幸的是,我们的任务是从View扩展我的自定义类,而不是ImageView。所以,如果有人知道如何解决这个问题 - 我绝对不是第一个遇到这个问题的人;-) - 请告诉我!

这里是onDraw - 方法,没有魔法:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    if (bitmap != null)
        canvas.drawBitmap(bitmap, sourceRect, targetRect, paint);
}

1 个答案:

答案 0 :(得分:2)

当您设置要查看的填充时,应在绘图期间考虑它们。您可以通过在自定义视图中创建private BitmapDrawable mDrawable; public void setBitmap(Bitmap bitmap) { mDrawable = new BitmapDrawable(getResources(), bitmap); invalidate(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (mDrawable != null) { int paddingLeft = getPaddingLeft(); int paddingTop = getPaddingTop(); int paddingRight = getPaddingRight(); int paddingBottom = getPaddingBottom(); int contentWidth = getWidth() - paddingLeft - paddingRight; int contentHeight = getHeight() - paddingTop - paddingBottom; mDrawable.setBounds(paddingLeft, paddingTop, paddingLeft + contentWidth, paddingTop + contentHeight); mDrawable.draw(canvas); } } 变量,然后根据填充对其进行初始化和绘制来实现此目的。

 <script>
 $(document).ready(function() {
    $('#myTable').dynatable();
 });
 </script>