我有 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>
答案 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)
现在,您可以将ConstraintSet
和connect
更新为指南的ID。例如,要让someView
从中心右侧开始7dp:
connect(someView.id, ConstraintSet.START, centerGuideline.id, ConstraintSet.START, dpToPx(context, 7))
项目dpToPx
用来将设备单位转换为像素的地方。