Android工作室不断用固定的dp值代替match_parent

Android工作室(v 2.3.1)不断用一个固定的dp vanue代替一个RelativeLayout的match_parent 。 例如,当我inputmatch_parent作为宽度时,它用368dpreplace它。 当我testing应用程序,我看到RelativeLayout确实是错误的。

有谁知道如何解决这一问题?

 <?xml version="1.0" encoding="utf-8"?> <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="be.mawey.lamachat.LoginActivity"> <RelativeLayout android:layout_width="match_parent" <!-- THIS IS BEING REPLACED WITH 368dp --> android:layout_height="match_parent" <!-- THIS IS BEING REPLACED WITH 495dp --> tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="8dp"> <Button android:id="@+id/buttonLogin" android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:background="@color/colorPrimary" android:text="Login" android:textColor="@android:color/white" android:textSize="18sp" tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="292dp" /> <EditText android:id="@+id/editTextCode" android:layout_width="match_parent" android:layout_height="50dp" android:layout_above="@+id/buttonLogin" android:layout_alignParentStart="true" android:ems="10" android:hint="Secret code here" android:inputType="numberPassword" tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="234dp" /> <TextView android:id="@+id/textView3" android:layout_width="match_parent" android:layout_height="50dp" android:fontFamily="monospace" android:text="example" android:textAlignment="center" android:textColor="@color/colorPrimaryDark" android:textSize="36sp" android:textStyle="italic" tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="16dp" /> </RelativeLayout> </android.support.constraint.ConstraintLayout> 

Solutions Collecting From Web of "Android工作室不断用固定的dp值代替match_parent"

在这里输入图像说明

像图片所示那样做

简而言之:

您不能使用match_parent作为ConstraintLayout子项的维度。 你应该使用0dp这意味着“match_constraint”,并将其双方约束到父母的两侧:

 android:layout_width="0dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" 

要么

 android:layout_height="0dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" 

有一点背景(或者 – 我认为这个混乱源于哪里):

虽然我似乎无法find一个certificate,我的同事声称我错了 – 我敢肯定的是,约束层布局的android文档用于指导我们,开发人员使用“0dp或match_parent”作为layout_width值或layout_height来指示相应的视图的维度应该由constraintLayout使用指定的约束(而不是使用指定的固定值或通过确定其内容的维度)来确定。 我也很确定我以这种方式使用了这个值( match_parent ),并且在切换到AndroidStudio 2.3.1之前就工作了。

无论我是对的还是妄想,事实上目前的文件指出:

重要说明:ConstraintLayout中包含的小部件不支持MATCH_PARENT,尽pipe类似的行为可以通过使用MATCH_CONSTRAINT来定义,相应的左/右或顶部/底部约束被设置为“parent”。

另外, 0dp值和我记得曾经用过的一样:

可以通过以3种不同方式设置android:layout_width和android:layout_height属性来指定小部件的尺寸:

(……)

  • 使用0dp,相当于“MATCH_CONSTRAINT”

编辑使用Sirnivas的回答中的“推断约束”实际上使用了0dp方法。

注意:“match_constraint”似乎不是可以使用的值。 0dp是维度与约束匹配的实际值。

 <?xml version="1.0" encoding="utf-8"?> <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"> <Button android:id="@+id/buttonLogin" android:layout_width="0dp" android:layout_height="50dp" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:background="@color/colorPrimary" android:text="Login" android:textColor="@android:color/white" android:textSize="18sp" tools:layout_constraintRight_creator="1" tools:layout_constraintBottom_creator="1" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintRight_toRightOf="@+id/editTextCode" tools:layout_constraintLeft_creator="1" android:layout_marginBottom="169dp" app:layout_constraintLeft_toLeftOf="@+id/editTextCode" /> <EditText android:id="@+id/editTextCode" android:layout_width="0dp" android:layout_height="50dp" android:layout_above="@+id/buttonLogin" android:layout_alignParentStart="true" android:ems="10" android:hint="Secret code here" android:inputType="numberPassword" tools:layout_constraintRight_creator="1" tools:layout_constraintBottom_creator="1" app:layout_constraintBottom_toTopOf="@+id/buttonLogin" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" app:layout_constraintRight_toRightOf="parent" tools:layout_constraintLeft_creator="1" android:layout_marginBottom="8dp" app:layout_constraintLeft_toLeftOf="parent" /> <TextView android:id="@+id/textView3" android:layout_width="0dp" android:layout_height="50dp" android:fontFamily="monospace" android:text="example" android:textAlignment="center" android:textColor="@color/colorPrimaryDark" android:textSize="36sp" android:textStyle="italic" tools:layout_constraintTop_creator="1" tools:layout_constraintRight_creator="1" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" app:layout_constraintRight_toRightOf="parent" android:layout_marginTop="16dp" tools:layout_constraintLeft_creator="1" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>