0

ImageView получает изображение и упаковывает содержание, таким образом, если изображение имеет размеры как 100x100, то ImageView имеет те же размеры. Я хочу, чтобы указать только layout_height этого ImageView и когда он совпадает с изображением, чтобы изменить размер должным образом layout_width из ImageView.Android дизайн пользовательского интерфейса автоматического ImageView изменить размер

Вот пример:

размер = 100x100;

ImageViewlayout_height = 200;

ImageView «s layout_width должен стать 200 не 100.

Возможно ли это?

ответ

1

Вам необходимо создать собственный ImageView и переопределить onMeasure, чтобы сделать представление всегда квадратным.

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 

    SQUARE_DIMENSION = this.getMeasuredHeight(); // whatever height you want here 

    this.setMeasuredDimension(SQUARE_DIMENSION, SQUARE_DIMENSION); 
} 
+0

Вы принимаете мой пример как частный случай. Вы можете также иметь изображение размером 100x300, а затем, если layout_width = 200, layout_height должен быть 600 -> ImageView 200x600. Я приведу пример с простым вычислением целых чисел, но это может быть более сложным. Надеюсь, вы сейчас поняли мою точку зрения. – nenito

+1

Ну, мой пример все еще стоит в том, что если вы хотите точно контролировать, как вы оцениваете представление, вам нужно переопределить onMeasure. То, что вы используете для определения размера, зависит от вас. В вашем случае это звучит так, будто вы пытаетесь сохранить соотношение сторон изображения при масштабировании изображения вверх или вниз. Если это так, то вам нужно получить размер изображения и соответствующим образом скорректировать код. – jsrsoftware