Чтобы ImageView соответствовал своей высоте в Android, вы можете использовать следующие методы:
Метод 1: использование атрибута ScaleType
Вы можете установить атрибут ScaleType ImageView, чтобы добиться желаемого поведения подгонки высоты. Вот пример:
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/your_image"
android:scaleType="fitXY" />
В этом примере fitXYScaleType будет масштабировать изображение, чтобы оно соответствовало ширине и высоте ImageView, потенциально искажая соотношение сторон.
Метод 2: использование пользовательского ImageView
Вы можете создать собственный класс ImageView и переопределить метод onMeasure(), чтобы регулировать высоту ImageView в зависимости от соотношения сторон изображения. Вот пример:
public class HeightAdjustableImageView extends ImageView {
public HeightAdjustableImageView(Context context) {
super(context);
}
public HeightAdjustableImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public HeightAdjustableImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Drawable drawable = getDrawable();
if (drawable != null) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = width * drawable.getIntrinsicHeight() / drawable.getIntrinsicWidth();
setMeasuredDimension(width, height);
} else {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
}
Затем вы можете использовать этот пользовательский ImageView в XML-файле макета:
<com.example.yourpackage.HeightAdjustableImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/your_image" />