Вопрос по android, imageview – Android настроить ViewBounds ошибка?

4

Когда я использую Android: AdjustViewBounds = & quot; true & quot; в моем imageView XML не работает. Если я поставлю setAdjustViewBounds (true); в конструкторах моего ImageView, он работает нормально. В чем разница, или это ошибка?

<ImageView
                android:id="@+id/PageViewMainImage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:scaleType="matrix"     
                android:adjustViewBounds="true"               
                android:visibility="invisible"/>
Посмотрите эту ТАКУЮ Нитьstackoverflow.com/questions/7719617/… K_Anas

Ваш Ответ

1   ответ
16

ImageView конструктор (см. источник здесь) разбирает и устанавливаетadjustViewBounds свойство из XML, прежде чем он анализирует и устанавливаетscaleType атрибут из XML. ЧастьsetAdjustViewBounds() метод (который вызывается конструктором со значением вашего атрибута XML), чтобы установитьScaleType вFIT_CENTER когда значение истинно.

Поэтому, когда загруженный вами XML-файл загружен,ScaleType сначала устанавливается наFIT_CENTER а затем снова установить наMATRIX потом все внутри конструктора. Сравните это с вашим примером вызоваsetAdjustViewBounds() вместо Java, и теперь финалScaleType будетFIT_CENTER как ваш вызов Java произойдет после синтаксического анализа атрибутов XML (фактически означает, что вашandroid:scaleType="matrix" атрибут игнорируется. Это различие, вероятно, то, что вы видите между "работами" и "не работает".

Я не уверен, что Google назвал бы это ошибкой, поскольку они только устанавливаютScaleType к тому, что, по их мнению, вы хотите для удобства сохранить аспект, но все же позволить вам изменить это. Сами границы вида будут по-прежнему изменяться в зависимости от указания имени свойства, изображение может просто обрезаться так, как вы этого не ожидали.

Документы, вероятно, могли бы быть более понятными по этой «функции» тем не менее, чтобы вы могли подать отчет об ошибке наhttp://b.android.com

НТН

AdjustViewBounds не будет увеличиваться выше естественного размера bmp. Если ваш bmp составляет 50x50, то есть максимум, что вы можете из него получить, вы не получите масштабированное изображение в окне 200x200. Чтобы это исправить, вам нужно предоставить bmp больше, чем окно, чтобы оно могло уменьшаться.

Похожие вопросы