2

ボタンをクリックすると、drawDigit()が呼び出され、puzzleviewはActivityのLinearLayoutにすぎません

protected void drawDigit(Canvas canvas, int digit) {
        // TODO Auto-generated method stub
        if(num < diff){
            int x = tiles.get(num).getScrollX();  // get the X coordinate of ImageView,it's 0
            int y = tiles.get(num).getScrollY();  // get the Y coordinate of ImageView,it's 0
            float height = tiles.get(num).getHeight(); // height is 0
            float width = tiles.get(num).getWidth();   // width is 0
            background.setTextSize(height * 0.75f);
            background.setStyle(Style.FILL);
            background.setTextScaleX(width/height);
            background.setTextAlign(Paint.Align.CENTER);
            canvas.drawText(digit + "", x, y, background);
            //num++;
        }
    }

ImageViewレイアウト内をタイルに割り当ててから、座標とサイズを取得するにはどうすればよいですか?

4

1 に答える 1

1

これを試すことができます:

//これは、レイアウトで固定されている ImageView のサイズを取得するためのものです

int imageHeight;
int imageWidth;

ImageView imageViewObj = (ImageView)findViewById(R.id.image_view_id);
ViewTreeObserver treeObsObj = imageViewObj.getViewTreeObserver();
treeObsObj.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {

    public boolean onPreDraw() {
    imageWidth= imageViewObj.getMeasuredWidth();
    imageHeight = imageViewObj.getMeasuredHeight();
    return true;
}
});

// ImageView 内の画像のサイズを取得し、サイズは
**// ImageView 内に配置した画像によって異なります

ImageView imageObj = (ImageView)findViewById(R.id.image_view_id);
int imageWidth = imageObj.getWidth();
int imageHeight = imageObj.getHeight();
于 2012-11-13T10:26:25.963 に答える