2016-01-22 108 views
1

我有幾張圖片,必須縮放到常規高度,但寬度不同。我如何在LinearLayout內將它們設置爲固定高度,以便自動評估它們的寬度以保持其高寬比?如何使基於固定高度的ImageView匹配寬度?

我想:

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

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="200dp" 
      android:src="@drawable/clean"/> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="200dp" 
      android:src="@drawable/c4"/> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="200dp" 
      android:src="@drawable/c4"/> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="200dp" 
      android:src="@drawable/c4"/> 

    </LinearLayout> 

不幸的是,效果還遠遠沒有我所期待的(圖像太寬):

Result

+0

嘗試使用''的android:layout_width = 「0dp」''和''機器人:layout_weight = 「1」''所有的ImageView –

+0

@DanhDC不行的,更大的圖片被縮小超過小那些...... – Spook

+0

所以你想要一個正方形的圖像視圖取決於圖像的高度嗎? –

回答

0

不喜歡這一點,使用android:scaleType="centerCrop"

<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:weightSum="1" 
      android:orientation="horizontal"> 

      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="200dp" 
       android:layout_weight="0.25" 
       android:scaleType="centerCrop" 
       android:src="@drawable/clean"/> 
      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="200dp" 
       android:layout_weight="0.25" 
       android:scaleType="centerCrop" 
       android:src="@drawable/c4"/> 
      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="200dp" 
       android:layout_weight="0.25" 
       android:scaleType="centerCrop" 
       android:src="@drawable/c4"/> 
      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="200dp" 
       android:layout_weight="0.25" 
       android:scaleType="centerCrop" 
       android:src="@drawable/c4"/> 

     </LinearLayout> 
+0

這不太可能起作用,第一張圖片比其他圖片更寬,它會比其他圖片縮小更多... – Spook

+0

使用android:scaleType = 「centerCrop」 – Madhur

0

使用寬度=「0」的所有ImageViews weight =「 1「,並將圖像設置爲ImageView內的背景,而不是在src中。

0

找到了!訣竅是同時使用android:scaleType="fitXY"android:adjustViewBounds="true"

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:orientation="horizontal"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="200dp" 
      android:scaleType="fitXY" 
      android:adjustViewBounds="true" 
      android:src="@drawable/clean"/> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="200dp" 
      android:scaleType="fitXY" 
      android:adjustViewBounds="true" 
      android:src="@drawable/c4"/> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="200dp" 
      android:scaleType="fitXY" 
      android:adjustViewBounds="true" 
      android:src="@drawable/c4"/> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="200dp" 
      android:scaleType="fitXY" 
      android:adjustViewBounds="true" 
      android:src="@drawable/c4"/> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="200dp" 
      android:scaleType="fitXY" 
      android:adjustViewBounds="true" 
      android:src="@drawable/c4"/> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="200dp" 
      android:scaleType="fitXY" 
      android:adjustViewBounds="true" 
      android:src="@drawable/c4"/> 

    </LinearLayout> 
相關問題