2017-09-16 86 views
0

我试图让两张卡片成为相同的正方形,每边都有8dp的边距水平对齐。将两张相同的卡片与约束布局对齐

事情是这样的:

example

我一直在使用约束布局和卡片的比例设置为1的尝试:1,卡对齐,并为正方形,但他们是小得可笑和不匹配整个布局。

这里是我的布局:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/background" 
    android:orientation="vertical"> 

    <android.support.constraint.ConstraintLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top" 
     android:background="@color/background"> 

     <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/card1" 
      android:layout_width="wrap_content" 
      android:layout_height="0dp" 
      android:layout_marginLeft="8dp" 
      android:layout_marginRight="8dp" 
      android:layout_marginStart="8dp" 
      android:layout_marginTop="8dp" 
      card_view:cardBackgroundColor="@color/cards" 
      card_view:cardCornerRadius="2dp" 
      card_view:cardElevation="2dp" 
      card_view:layout_constraintDimensionRatio="1:1" 
      card_view:layout_constraintHorizontal_chainStyle="spread_inside" 
      card_view:layout_constraintHorizontal_weight="2" 
      card_view:layout_constraintLeft_toLeftOf="parent" 
      card_view:layout_constraintRight_toLeftOf="@id/card2" 
      card_view:layout_constraintTop_toTopOf="parent"> 


      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:text="Hey" 
       android:textColor="#FFFFFF" /> 

     </android.support.v7.widget.CardView> 

     <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/card2" 
      android:layout_width="wrap_content" 
      android:layout_height="0dp" 
      android:layout_marginEnd="8dp" 
      android:layout_marginLeft="8dp" 
      android:layout_marginRight="8dp" 
      android:layout_marginTop="8dp" 
      card_view:cardBackgroundColor="@color/cards" 
      card_view:cardCornerRadius="2dp" 
      card_view:cardElevation="2dp" 
      card_view:layout_constraintDimensionRatio="1:1" 
      card_view:layout_constraintHorizontal_chainStyle="spread_inside" 
      card_view:layout_constraintHorizontal_weight="2" 
      card_view:layout_constraintLeft_toRightOf="@+id/card1" 
      card_view:layout_constraintRight_toRightOf="parent" 
      card_view:layout_constraintTop_toTopOf="parent"> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:text="Hey" 
       android:textColor="#FFFFFF" /> 

     </android.support.v7.widget.CardView> 

    </android.support.constraint.ConstraintLayout> 

</LinearLayout> 

这里就是我得到:

screenshot of the result

我十分赞同约束布局丢失了,所以我应该怎么做的,我是什么做错了?

谢谢。

回答

1

当您想要约束来定义视图的尺寸时,必须将该尺寸设置为0dp。因此,您应该将两个CardView s上的android:layout_width="wrap_content"属性替换为android:layout_width="0dp"

接下来,您要确保卡片展开以填充所有可用空间。所以,你应该从两个卡中删除这两个属性:

card_view:layout_constraintHorizontal_chainStyle="spread_inside" 
card_view:layout_constraintHorizontal_weight="2" 

从那里,只是玩的利润率,直至卡看起来像你希望他们。请注意,利润率对链条应用有点奇怪(视图可以将边缘向下传递给链条),所以你可能只想在第一张卡片上放置左/右边距,而你应该在两边都放置上/下边距(因为它是水平的链,水平边界是“共享”)。

+0

谢谢,在第一张卡上放置左/右边距效果很好。 – Mpk605

1

hi @ Mpk605尝试将cardviews的宽度设置为0dp.Now,因为它们是wrap_content,cardview环绕文本并因此看起来很小。它会随着文字变大而放大(你可以试试)。 将宽度设置为0dp等于将其设置为match_parent。因此它将填充匹配指定约束后的所有可用空间。