如何在约束布局中水平匹配两个元素?

How to match two element horizontally in Constraint Layout?

我想匹配背景不是完整矩形的两个视图(一个按钮和一个文本视图)。这些形状是:

左背景

右背景

任何人都可以帮助我,所以我可以像这样把它们放在一起:

xml 这两个形状的代码在这里: 正确的形状:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="134dp"
    android:height="84dp"
    android:viewportWidth="134"
    android:viewportHeight="84">
  <path
      android:pathData="M24,2.06981099e-11 L110,0 C123.254834,-2.48646561e-12 134,10.745166 134,24 L134,60 C134,73.254834 123.254834,84 110,84 L0,84 L24,2.06981099e-11 Z"
      android:strokeWidth="1"
      android:fillColor="#FFD949"
      android:fillType="evenOdd"
      android:strokeColor="#00000000"/>
</vector>

左侧形状:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="234dp"
    android:height="84dp"
    android:viewportWidth="234"
    android:viewportHeight="84">
  <path
      android:pathData="M24,0L234,0L210,84L24,84C10.745,84 0,73.255     0,60L0,24C-0,10.745 10.745,0 24,0Z"
      android:strokeWidth="1"
      android:fillColor="#FFCD0D"
      android:fillType="evenOdd"
      android:strokeColor="#00000000"/>
</vector>

如果您试图实现负边距以重叠两个视图并将它们的背景放在一起,请尝试以下解决方案:

此代码应该可以正常工作!它对我有用。

<?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"
    android:orientation="vertical"
    android:layout_width="358dp"
    android:layout_height="84dp"
    android:layout_gravity="center_horizontal">

    <Button
        android:id="@+id/lb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:background="@drawable/left_shape"
        android:text="LB"
        android:textSize="70sp"
        android:gravity="center"
        app:layout_constraintHorizontal_chainStyle="packed" />

    <android.support.v4.widget.Space
        android:id="@+id/marginSpacer"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toTopOf="@id/lb"
        app:layout_constraintLeft_toRightOf="@+id/lb" />

    <TextView
        android:id="@+id/rt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/right_shape"
        android:gravity="center"
        android:textSize="38sp"
        android:layout_marginStart="85dp"
        app:layout_constraintLeft_toLeftOf="@id/marginSpacer"
        app:layout_constraintRight_toRightOf="@id/marginSpacer"
        app:layout_constraintTop_toBottomOf="@+id/marginSpacer"
        android:text="RT"/>

</android.support.constraint.ConstraintLayout>

此布局使所有设备在那里相同,因为您需要在应用级别 gradle 文件中添加以下依赖项..

    implementation 'com.intuit.sdp:sdp-android:1.0.4'

然后在编写下面的布局代码后,所有设备都相同..

<?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"
android:orientation="vertical"
android:layout_width="@dimen/_300sdp"
android:layout_height="@dimen/_70sdp"
android:layout_margin="@dimen/_10sdp"
android:layout_gravity="center_horizontal">

<Button
    android:id="@+id/lb"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/_32sdp"
    android:background="@drawable/left_side"
    android:textSize="@dimen/_20sdp"
    android:gravity="center"
    android:text="left"
    android:textAllCaps="false"
    app:layout_constraintHorizontal_chainStyle="packed" />

<android.support.v4.widget.Space
    android:id="@+id/marginSpacer"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toTopOf="@id/lb"
    app:layout_constraintLeft_toRightOf="@+id/lb" />

<TextView
    android:id="@+id/rtTvData"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/right_side"
    android:gravity="center"
    android:textSize="@dimen/_20sdp"
    android:layout_marginStart="@dimen/_70sdp"
    app:layout_constraintLeft_toLeftOf="@id/marginSpacer"
    app:layout_constraintRight_toRightOf="@id/marginSpacer"
    app:layout_constraintTop_toBottomOf="@+id/marginSpacer"
    android:text="Right"
    />
</android.support.constraint.ConstraintLayout>