2016-08-14 5 views
2

Ниже снимок экрана, я вставляю изображение, используя ImageView, в CardView.Как избавиться от пустых пространств вокруг ImageView внутри CardView

Проблема в том, что я, похоже, не могу избавиться от пустого пространства под изображением. (выделено светло-голубым цветом)

Я пробовал a solution that works, но мне требуется явно указать высоту изображения, которого я стараюсь не делать, потому что источник может быть различным, и мне нужно изображение для гибкого масштабирования вверх/вниз (с одинаковым соотношением сторон) в зависимости от ширины карты.

Вот скриншот:

enter image description here

А вот фрагмент кода:

<android.support.v7.widget.CardView 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/card_view" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    card_view:cardCornerRadius="2dp" 
    card_view:cardElevation="2dp"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="7dp"> 
     <TextView 
      android:id="@+id/caption_text" 
      android:text="Hello World!" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="20dp" 
      android:scaleType="fitStart" 
      android:layout_below="@id/caption_text" 
      android:src="@drawable/food"/> 
    </RelativeLayout> 
</android.support.v7.widget.CardView> 

Итак, есть ли способ сделать CardView автоматически обтекать изображение (не выходя любое пустое пространство) и без указания высоты изображения явно?

ответ

2

Изменение высоты <RelativeLayout> до wrap_content. В настоящее время он имеет круговую зависимость по высоте.

[EDIT]

Нам нужно установить свойство android:adjustViewBounds="true" для изображения масштабироваться с источником. Его false по умолчанию!

<android.support.v7.widget.CardView 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/card_view" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    card_view:cardCornerRadius="2dp" 
    card_view:cardElevation="2dp"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="7dp"> 
     <TextView 
      android:id="@+id/caption_text" 
      android:text="Hello World!" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="20dp" 
      android:adjustViewBounds="true" 
      android:layout_below="@id/caption_text" 
      android:src="@drawable/food"/> 
    </RelativeLayout> 
</android.support.v7.widget.CardView> 
+0

пробовал, но ваше решение не работает. btw я изменил скриншот, потому что ранее показывает неправильную голубую подсветку. –

+0

@MosesAprico Проверьте мое обновление выше – Shaishav

+0

глупый андроид duh. как они могут сделать какую-то странную конфигурацию по умолчанию. :/ –