具有约束布局的九个补丁

Nine Patch With Constraint Layout

是否可以使用带约束布局的 9-patch drawable?我正在尝试渲染一个可编辑的分数。两个 edittext 由九个 patch drawable 分隔,基本上是一条可以水平扩展的黑线:

<android.support.constraint.ConstraintLayout
    android:id="@+id/constraint_content"
    android:layout_width="wrap_content"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/numerator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:hint="@string/x"
        android:inputType="number"
        android:textColorHint="@android:color/transparent"
        android:textSize="24sp"
        mr:layout_constraintBottom_toTopOf="@id/denominator" />

    <EditText
        android:id="@+id/denominator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:hint="@string/x"
        android:inputType="number"
        android:textColorHint="@android:color/transparent"
        android:textSize="24sp"
        mr:layout_constraintBottom_toBottomOf="@id/numerator" />

    <View
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@drawable/fraction"
        mr:layout_constraintEnd_toEndOf="@id/denominator"
        mr:layout_constraintStart_toStartOf="@string/numerator" />

</android.support.constraint.ConstraintLayout>

直线呈现正确,但当分子或分母增加长度时,它不会自行拉伸。可绘制对象在 "classic" 布局 (LinearLayout) 下工作正常。

Link 对于 9 patch drawable

编辑:添加:

mr:layout_constraintWidth_default="percent"
mr:layout_constraintWidth_percent="1"

视图布局似乎可行,现在我需要将内容居中...

用于显示 nine-patch 可绘制对象的 View 约束之一存在错误:

mr:layout_constraintStart_toStartOf="@string/numerator"

您试图将 View 的末尾限制为字符串资源,这实际上不会引发任何错误。

由于您希望此 View 与分母或分母(以较长者为准)一起展开,并且您的 parent ConstraintLayout 已将 android:layout_width 设置为 wrap_content 您可以像这样将 View 的水平约束限制为 parent

<View
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:background="@drawable/fraction"
    mr:layout_constraintBottom_toTopOf="@id/denominator"
    mr:layout_constraintEnd_toEndOf="parent"
    mr:layout_constraintStart_toStartOf="parent"
    mr:layout_constraintTop_toBottomOf="@id/numerator" />

结果: