Автоматическое изменение размера ImageView (кроме TextView) и родительской высоты при сохранении соотношения сторон

Я борюсь с вопросом новичка.

У меня есть макет, определенный следующим образом: (он используется как элемент списка)

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/articleSmallImageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:adjustViewBounds="true"
        android:scaleType="fitStart" />

    <LinearLayout
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:layout_weight="2"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/newsIntroText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:text="TextView"
            android:textColor="@color/black" />

    </LinearLayout>
</LinearLayout>

Чего я хочу добиться, так это: высота родительского макета для изменения размера в соответствии с самым высоким дочерним элементом. В этом случае, если TextView выше, чем ImageView, соотношение сторон ImageView должно быть неповрежденным, с максимальной возможной шириной, а если ImageView выше, чем TextView, опять же, ширина должна быть максимальной, а родитель должен иметь высоту как ImageView.

введите здесь описание изображения

На самом деле это скриншот из моего приложения, работающего на JB 4.3. и выглядит так, как ожидалось. А вот на ICS 4.0.3, 4.0.4 это выглядит так.

введите здесь описание изображения

Я не вижу причин, по которым ImageView не заполняет это пустое пространство.

Помощь..


person bajicdusko    schedule 01.12.2013    source источник
comment
Когда вы используете weight в горизонтальной линейной компоновке, вы всегда устанавливаете width на 0dp   -  person Youans    schedule 01.12.2013
comment
Я установил значение ширины 0dp, но без изменений для ICS   -  person bajicdusko    schedule 01.12.2013


Ответы (1)


Попробуйте значение fitXY для scaleType. Кстати, если я что-то не упустил, я думаю, что ваш LinearLayout1 бесполезен. Кроме того, как сказал YouYou. Если вес был установлен в вертикальном макете, высота должна быть 0dp, а в горизонтальном линейном макете ширина должна быть установлена ​​​​на 0dp для лучшей производительности.

person Aftab Hussain    schedule 01.12.2013
comment
LinearLayout1 содержит более одного TextView, но для этих элементов установлена ​​видимость GONE (я ожидаю запроса от клиента, чтобы в какой-то момент перевести их в состояние VISIBLE), но их присутствие не имеет значения для проблемы, которую я описал. Теперь я изменил scaleYpe на fitXY, и, как я и ожидал, изображение растянуто (ширина заполнена), но высота мала (как на втором снимке экрана). И я изменил ширину на 0dp. Он работает на JB, но не на ICS. Что-то не так с AdjustViewBound на ICS - person bajicdusko; 01.12.2013
comment
установите высоту ImageView на match_parent. Сейчас он не масштабируется, потому что максимальная высота, которую он пытается использовать, - это высота изображения. - person Aftab Hussain; 01.12.2013