如何在中心制作约束布局指南

时间:2017-11-04 16:10:47

标签: android android-layout android-constraintlayout

我有 3约束布局指南。一个是左边距16dp左边。第二个是右边16dp右边距。 但我想要另一个将在中心的指南。假设如果我在Android Stdio XML设计面板的nexus 5中创建此指南中心,那么在nexus S中它不会显示在中心。 如何解决这个问题?

 <android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.blabla.ScrollingActivity">

    <android.support.constraint.Guideline
        android:id="@+id/guideline_end"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_end="16dp" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline_start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="16dp" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="180dp"/>
 </android.support.constraint.ConstraintLayout>

2 个答案:

答案 0 :(得分:28)

我们可以使用标记

设置使用百分比的指南

app:layout_constraintGuide_percent="0.5"

其中0.5(50%)是0到1之间的浮点值

答案 1 :(得分:2)

在科特林:

    // Create constraint layout (maybe you have this already)
    val buttonLayout = ConstraintLayout(context)
    buttonLayout.id = View.generateViewId()

    // Create guideline
    val centerGuideline = Guideline(context)
    centerGuideline.id = View.generateViewId()

    // We want a vertical guideline, 50% across the width
    val centerParams = ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.MATCH_PARENT)
    centerParams.guidePercent = 0.5f
    centerParams.orientation = ConstraintLayout.LayoutParams.VERTICAL

    // Add guideline to layout.
    buttonLayout.addView(centerGuideline, centerParams)

现在,您可以将ConstraintSetconnect更新为指南的ID。例如,要让someView从中心右侧开始7dp:

    connect(someView.id, ConstraintSet.START, centerGuideline.id, ConstraintSet.START, dpToPx(context, 7))

项目dpToPx用来将设备单位转换为像素的地方。