为什么Android ViewGroup会在其边缘缩放子图像?

时间:2014-06-10 17:46:33

标签: android viewgroup

我使用ViewGroup作为容器,将较小尺寸图标图像的多个实例放置在任意位置。当图标放置在容器的底部或右边缘附近时,它们会自动缩放以适合ViewGroup的边界。为什么会发生这种情况,我该如何预防呢?我将ViewGroup上的clipChildren属性设置为FALSE以查看它是否有效,但事实并非如此。

ViewGroup是动态添加的。 m_iconContainer是显示图标的ViewGroup。

m_outerContainer = (ViewGroup) v.findViewById( R.id.outer );
m_iconContainer = new ScalingFrameLayout( getActivity() );
m_outerContainer.addView( m_iconContainer );

以简单明了的方式添加图标:

PinImage p = new PinImage( getActivity() );
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) p.getLayoutParams();
params.leftMargin = pt.x - PIN_IMAGE_XOFFSET;
params.topMargin = pt.y - PIN_IMAGE_YOFFSET;
m_iconContainer.addView( p );

public class ScalingFrameLayout extends FrameLayout {
    private float scale = 1;

    public ScalingFrameLayout(Context context) {
        super(context);
        setWillNotDraw(false);
        setClipChildren(false);
    }

    public void setScale(float factor) {
        scale = factor;
        invalidate();
    }

    public float getScale() {
        return scale;
    }

    @Override
    public void onDraw(Canvas canvas) {
        canvas.scale(scale, scale);
        super.onDraw(canvas);
    }
}


protected class PinImage extends ImageView {
    public PinImage( Context c ) {
    super( c );
    setLayoutParams( new FrameLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ));
    setImageResource( R.drawable.droppin );
        this.setOnClickListener( new OnClickListener() { 
            public void onClick( View v ) {
                 onCommentPinTouched( v );
            }
        });
    }
}

0 个答案:

没有答案