1

尊重限制我試圖把一個ConstraintLayout內的CardView,對雙方一定的餘量。CardView在Android不從ConstraintLayout

我設置CardView利潤率相比,父母,左,右,然後設置layout_width在0dp:它會延長,並採取一切可用的空間,忽略了利潤率。

如果我將CardView放入FrameLayout中,然後將相同的確切約束應用於FrameLayout,則FrameLayout將尊重它們,並且CardView將適合它(請參閱下面的代碼)。

<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="...MyActivity..."> 
    <FrameLayout 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="32dp" 
     android:layout_marginLeft="32dp" 
     android:layout_marginRight="32dp" 
     android:layout_marginStart="32dp" 
     android:layout_marginTop="32dp" 
     app:layout_constraintBottom_toTopOf="@+id/nextButton" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent"> 

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

所以我得到它的工作我需要的方式,但我想明白爲什麼計算自己的寬度,設置爲0dp時CardView不走的利潤考慮在內。

回答

0

在CardView從兩側設置距離,你可能會看到這個例子:

<android.support.v7.widget.CardView 
    android:layout_width="0dp" 
    android:layout_height="186dp" 
    android:layout_marginLeft="12dp" 
    android:layout_marginRight="12dp" 
    android:layout_marginTop="8dp" 
    android:alpha=".5" 
    android:clickable="true" 
    android:foreground="?android:attr/selectableItemBackground" 
    app:cardBackgroundColor="@android:color/black" 
    app:cardCornerRadius="4dp" 
    app:constraintSet="@dimen/spacing_normal" 
    app:contentPaddingBottom="@dimen/spacing_double" 
    app:contentPaddingTop="@dimen/spacing_double" 
    app:elevation="@dimen/cardview_default_elevation" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    tools:layout_constraintLeft_creator="1" 
    tools:layout_constraintRight_creator="1" 
    tools:layout_constraintTop_creator="1" /> 

只是讓我知道結果

+0

不會只改變編輯器內的位置嗎?這是我對「工具」命名空間的理解 – gianpi

+0

我編輯了我的文章,因爲我不得不添加一些東西,它的工作原理。 – Meikiem

+0

檢查一下,我測試了它,左右邊距保持不變 – Meikiem

0

它不工作的原因是,它需要layout_marginEnd和layout_marginStart而不是layout_marginLeft和layout_marginRight。

這些似乎默認添加到FrameLayout但不CardView。