1

我有一个盒子,里面有:

  • a Button:点击折叠或展开下图。

  • an CustomImageView:GONE折叠时设置VISIBLE,展开时设置。调整图像大小以填充屏幕宽度,如下代码:

    公共类 CustomImageView 扩展 ImageView {

    public CustomImageView(Context context) {
        super(context);
    }
    
    public CustomImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    
    public CustomImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    
        Drawable drawable = getDrawable();
        if (drawable != null)
        {
            int width =  MeasureSpec.getSize(widthMeasureSpec);
            int diw = drawable.getIntrinsicWidth();
            if (diw > 0) {
                int height = width * drawable.getIntrinsicHeight() / diw;
                setMeasuredDimension(width, height);
            }
            else {
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            }
        }
        else {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    
    }
    

    }

在第一次运行默认情况下,图像被扩展 ( VISIBLE)。

+-------------+
|-----(+)-----|
===============
| ----------- |
| |         | |
| |  (IMG)  | |
| |         | |
| ----------- |
===============

按下按钮后+,图像是GONE

+-------------+
|-----(-)-----|
===============

接下来,按下按钮-,图像被设置VISIBLE

+-------------+
|-----(+)-----|
===============
| ----------- |
| |  (IMG)  | |
===============

问题就在这里,图像只显示它的一部分,而不是全高。如果我使用默认的支持ImageView类,它肯定会正确显示,但是,它不会调整为屏幕的全宽(高度是用宽度比调整的)。

谁能指出我这个问题?谢谢!

4

0 回答 0