我有一个盒子,里面有:
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
类,它肯定会正确显示,但是,它不会调整为屏幕的全宽(高度是用宽度比调整的)。
谁能指出我这个问题?谢谢!