0

次のように、setImage を持ち、onLayout と onDraw をオーバーライドするカスタム ビュー: ImageZoomView.java があります。

public void setImage(Bitmap bitmap) {
    mBitmap = bitmap; ...
}


@Override
protected void onDraw(Canvas canvas) {
    if (mBitmap != null && mState != null) {
        ...
        canvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPaint);
    }
}

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
    super.onLayout(changed, left, top, right, bottom);...
}

そして、layoutParams ルールを使用して、RelativeLayout 内に複数の ImageZoomViews を配置したいのですが、すべてのビューが (0,0) の位置に固定されています。理由はわかりません。

       ImageZoomView mZoomView = new ImageZoomView(getApplicationContext());

 mZoomView.setImage(mBitmap);
 mZoomView.setId(index+1);

 RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.RelativeLayout01);
 RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(screenWidth/2, screenHeight/2);
 if(index > 0)
  lp.addRule(RelativeLayout.RIGHT_OF, index);

 relativeLayout.addView(mZoomView, lp);

通常の ImageViews でまったく同じコードを試してみましたが、動作し、すべてのビューが (n-1) ビューの右側に配置されています...

アイデアはありますか?ありがとう。

4

1 に答える 1

0

変数のインデックスが値 0 のままになっている可能性があると思われます。インクリメントされていることを確認してください。

于 2011-01-12T13:08:07.987 に答える