【问题标题】:How to make Constraint Layout Guideline in center如何在中心制作约束布局指南
【发布时间】:2017-11-04 16:10:47
【问题描述】:

我有 3 约束布局指南。一个在左边,16dpleft margin。第二个在右边,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>

【问题讨论】:

    标签: android android-layout android-constraintlayout


    【解决方案1】:

    我们可以通过使用标签来设置使用百分比的准则

    app:layout_constraintGuide_percent="0.5"

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

    【讨论】:

    • 嗯,对我不起作用。它粘在最左侧,而不是中心。我错过了什么?
    • 但是为什么呢?为什么指南不受与其他视图类似的约束?!
    【解决方案2】:

    在 Kotlin 中:

        // 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 是您的项目用来将设备单位转换为像素的任何值。

    【讨论】:

      【解决方案3】:

      要注意的是,设计屏幕上的指南呈现不规则。使用app:layout_constraintGuide_percent="0.5" 就足以让它在中间对齐

      <androidx.constraintlayout.widget.Guideline
      app:layout_constraintGuide_percent="0.5"
              app:layout_constraintStart_toStartOf="parent"
              app:layout_constraintEnd_toEndOf="parent"/>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-09
        • 2020-10-13
        • 1970-01-01
        • 2021-08-27
        • 1970-01-01
        • 2017-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多