我想在ImageView上绘图,当我尝试创建Bitmap时,程序崩溃了。 首先我创建了变量
private ImageView backgroudn;
在onCreate方法中,我将背景指向我的xml文件中的对象。
this.backgroudn = (ImageView) findViewById(R.id.ivbackground);
drawGrid ();
但是现在当我想在函数drawGrid()中绘制这个ImageView时,它首先返回ImageView的大小为width = 0和height = 0.为什么我做错了?
private void drawGrid () {
int height = this.backgroudn.getHeight();
int width = this.backgroudn.getWidth();
// return's height = width = 0
System.out.println("height: " + height + " width: " + width);
// where program crashes.
Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bm);
Paint p = new Paint();
p.setColor(Color.BLACK);
int sizeW = width/7;
int sizeH = height/7;
for (int i = 0; i < 8; i++) {
c.drawLine(i*sizeW, 0, i*sizeW, height, p);
c.drawLine(0, i*sizeH, width, i*sizeH, p);
}
backgroudn.setImageBitmap(bm);
}
答案 0 :(得分:0)
我发现错误只是因为身高和宽度都是0.但我仍然需要这些值,我该怎么办?
这是我的xml代码:
<ImageView
android:id="@+id/ivbackground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_column="0"
android:layout_gravity="left|center_vertical"
android:layout_alignParentTop="true"
android:layout_marginTop="44dp"
android:layout_row="0" />