我在向自定义ImageView分配填充值时出现问题。请注意,我没有延长ImageView
,而是View
:
public class CustomImageView extends View
图像通过路径从资源文件夹加载。来源和目标 - Rect
在onLayout(...)
中计算,位图在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);
}
答案 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>