2017-10-17 65 views
0

我在XML中有4张图片,我想在我的RelativeLayout中以2×2的网格显示它们,我希望同一行中的图片能够平均占用宽度。我试图使用wrap_content,但它没有工作,图像没有显示,我想避免设置一个固定的宽度/高度(如下面的代码),因为屏幕尺寸的差异。Android - 将4张图片放在2x2的网格中

<RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:focusable="false" 
      android:orientation="vertical"> 
      <com.facebook.drawee.view.SimpleDraweeView 
       android:id="@+id/picture" 
       android:layout_height="140dp" 
       android:layout_width="140dp" 
       fresco:viewAspectRatio="1" 
       fresco:fadeDuration="300" 
       fresco:actualImageScaleType="focusCrop" 
       fresco:failureImage="@android:color/transparent" 
       fresco:placeholderImage="@android:color/transparent" 
       fresco:progressBarAutoRotateInterval="1000" 
       fresco:progressBarImage="@drawable/loading_circle" 
       fresco:progressBarImageScaleType="centerInside"/> 
      <com.facebook.drawee.view.SimpleDraweeView 
       android:id="@+id/picture2" 
       android:layout_height="140dp" 
       android:layout_width="140dp" 
       android:layout_toRightOf="@id/picture" 
       fresco:viewAspectRatio="1" 
       fresco:fadeDuration="300" 
       fresco:actualImageScaleType="focusCrop" 
       fresco:failureImage="@android:color/transparent" 
       fresco:placeholderImage="@android:color/transparent" 
       fresco:progressBarAutoRotateInterval="1000" 
       fresco:progressBarImage="@drawable/loading_circle" 
       fresco:progressBarImageScaleType="centerInside"/> 
      <com.facebook.drawee.view.SimpleDraweeView 
       android:id="@+id/picture3" 
       android:layout_height="140dp" 
       android:layout_width="140dp" 
       android:layout_below="@id/picture" 
       fresco:viewAspectRatio="1" 
       fresco:fadeDuration="300" 
       fresco:actualImageScaleType="focusCrop" 
       fresco:failureImage="@android:color/transparent" 
       fresco:placeholderImage="@android:color/transparent" 
       fresco:progressBarAutoRotateInterval="1000" 
       fresco:progressBarImage="@drawable/loading_circle" 
       fresco:progressBarImageScaleType="centerInside"/> 
      <com.facebook.drawee.view.SimpleDraweeView 
       android:id="@+id/picture4" 
       android:layout_height="140dp" 
       android:layout_width="140dp" 
       android:layout_toRightOf="@id/picture3" 
       android:layout_below="@id/picture2" 
       fresco:viewAspectRatio="1" 
       fresco:fadeDuration="300" 
       fresco:actualImageScaleType="focusCrop" 
       fresco:failureImage="@android:color/transparent" 
       fresco:placeholderImage="@android:color/transparent" 
       fresco:progressBarAutoRotateInterval="1000" 
       fresco:progressBarImage="@drawable/loading_circle" 
       fresco:progressBarImageScaleType="centerInside"/> 
</RelativeLayout> 

回答

0

我设法通过使用两个LinearLayouts做到这一点:

<RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:focusable="false"> 
      <LinearLayout 
       android:id="@+id/btnLL" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 
      <com.facebook.drawee.view.SimpleDraweeView 
       android:id="@+id/picture" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       fresco:viewAspectRatio="1" 
       fresco:fadeDuration="300" 
       fresco:actualImageScaleType="focusCrop" 
       fresco:failureImage="@android:color/transparent" 
       fresco:placeholderImage="@android:color/transparent" 
       fresco:progressBarAutoRotateInterval="1000" 
       fresco:progressBarImage="@drawable/loading_circle" 
       fresco:progressBarImageScaleType="centerInside"/> 
      <com.facebook.drawee.view.SimpleDraweeView 
       android:id="@+id/picture2" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:layout_toRightOf="@id/picture" 
       fresco:viewAspectRatio="1" 
       fresco:fadeDuration="300" 
       fresco:actualImageScaleType="focusCrop" 
       fresco:failureImage="@android:color/transparent" 
       fresco:placeholderImage="@android:color/transparent" 
       fresco:progressBarAutoRotateInterval="1000" 
       fresco:progressBarImage="@drawable/loading_circle" 
       fresco:progressBarImageScaleType="centerInside"/> 
      </LinearLayout> 
      <LinearLayout 
       android:id="@+id/btnLL1" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/btnLL"> 
      <com.facebook.drawee.view.SimpleDraweeView 
       android:id="@+id/picture3" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:layout_below="@id/picture" 
       fresco:viewAspectRatio="1" 
       fresco:fadeDuration="300" 
       fresco:actualImageScaleType="focusCrop" 
       fresco:failureImage="@android:color/transparent" 
       fresco:placeholderImage="@android:color/transparent" 
       fresco:progressBarAutoRotateInterval="1000" 
       fresco:progressBarImage="@drawable/loading_circle" 
       fresco:progressBarImageScaleType="centerInside"/> 
      <com.facebook.drawee.view.SimpleDraweeView 
       android:id="@+id/picture4" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:layout_toRightOf="@id/picture3" 
       android:layout_below="@id/picture2" 
       fresco:viewAspectRatio="1" 
       fresco:fadeDuration="300" 
       fresco:actualImageScaleType="focusCrop" 
       fresco:failureImage="@android:color/transparent" 
       fresco:placeholderImage="@android:color/transparent" 
       fresco:progressBarAutoRotateInterval="1000" 
       fresco:progressBarImage="@drawable/loading_circle" 
       fresco:progressBarImageScaleType="centerInside"/> 
      </LinearLayout> 
      </RelativeLayout> 
+0

的RelativeLayout的本身成为这种不必要的,虽然,你可以只用唯一linearlayouts做到这一点。 如果你想使用relativelayout,那么你可以在relativelayout(居中)的中间添加一个空视图,并将其他视图与其相关。 另一种方法是使用PercentRelativeLayout,但它仅在23中添加,并在26中弃用! https://developer.android.com/reference/android/support/percent/PercentRelativeLayout.html –