ConstraintLayout实现中的问题

时间:2018-01-31 08:17:09

标签: android

我希望layout_constraintDimensionRatio可以与layout_constraintWidth_percent一起使用。但没有按预期工作。例如,创建一个方形视图,其宽度是父宽度的一半。

    <Button
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constrainedHeight="true"
    app:layout_constrainedWidth="true"
    app:layout_constraintDimensionRatio="H,1:1"
    app:layout_constraintWidth_default="percent"
    app:layout_constraintWidth_percent="0.5" />

我正在阅读android.support.constraint.ConstraintLayout

    private void setChildrenConstraints() {
    ...............

                if(layoutParams.dimensionRatio != null) {
                    widget.setDimensionRatio(layoutParams.dimensionRatio);
                }

                widget.setHorizontalWeight(layoutParams.horizontalWeight);
                widget.setVerticalWeight(layoutParams.verticalWeight);
                widget.setHorizontalChainStyle(layoutParams.horizontalChainStyle);
                widget.setVerticalChainStyle(layoutParams.verticalChainStyle);
                widget.setHorizontalMatchStyle(layoutParams.matchConstraintDefaultWidth, layoutParams.matchConstraintMinWidth, layoutParams.matchConstraintMaxWidth, layoutParams.matchConstraintPercentWidth);
                widget.setVerticalMatchStyle(layoutParams.matchConstraintDefaultHeight, layoutParams.matchConstraintMinHeight, layoutParams.matchConstraintMaxHeight, layoutParams.matchConstraintPercentHeight);

    }

}

我认为,应该在setVerticalWeight之后调用setDimensionRatio。这是ConstraintLayout中的错误。或者我错过了什么?

3 个答案:

答案 0 :(得分:0)

您可以发布有关ConstraintLayout属性的更多信息吗?据我所知和官方文件,

  

您还可以将窗口小部件的一个维度定义为另一个维度的比率。为此,您需要将至少一个约束维度设置为0dp(即MATCH_CONSTRAINT),并将属性layout_constraintDimensionRatio设置为给定比率。

您是否将layout_width设置为0dp?

答案 1 :(得分:0)

如果您希望自己的视图为宽度的50%,请使用Guideline

添加orientation="vertical"

E.g。

 <ImageView
        android:id="@+id/imageView7"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"

        app:srcCompat="@drawable/attach_audio" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.5" />

enter image description here 50%父母的

的Imageview

答案 2 :(得分:0)

在Dipali的回答的帮助下,我可以按照自己的意愿进行设计。

<Button
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintDimensionRatio="H,1:1"
    app:layout_constraintRight_toLeftOf="@+id/guide_line"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<android.support.constraint.Guideline
    android:id="@+id/guide_line"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.5" />

但我发现:layout_constraintDimensionRatio不适用于layout_constraintWidth_percent或layout_constraintHorizo​​ntal_chainStyle等。