在 ConstraintLayout xml 中取消设置 属性
Unset a property in a ConstraintLayout xml
我有一种带有默认 ConstraintLayout
行为的风格。现在我想重置 layout_constraintTop_toTopOf
属性 以获得 layout_constraintTop_toBottomOf
的正确约束。如何从视图中删除 layout_constraintTop_toTopOf
?
styles.xml:
<style name="ConstraintDefault">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">0dp</item>
<item name="layout_constraintBottom_toBottomOf">parent</item>
<item name="layout_constraintEnd_toEndOf">parent</item>
<item name="layout_constraintStart_toStartOf">parent</item>
<item name="layout_constraintTop_toTopOf">parent</item>
</style>
main_layout.xml:
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/include_toolbar"
layout="@layout/layout_toolbar" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rvDummy"
style="@style/ConstraintDefault"
app:layout_constraintTop_toBottomOf="@id/include_toolbar" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
style="@style/Fab"
app:srcCompat="@drawable/ic_add" />
</android.support.constraint.ConstraintLayout>
结果:
RecyclerView
重叠 Toolbar
因为 app:layout_constraintTop_toTopOf="parent"
对于像我认为约束布局有点矫枉过正的东西,你里面只有一个 recylcer 视图,我建议你改用协调器布局。
像这样
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="Your Context"
tools:showIn="@layout/activity_main">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
要取消约束布局 属性 必须用负数遮蔽它:
app:layout_constraintTop_toTopOf="-1" // Upd: It's DEPRECATED! Use the method below
事实证明,将 layout 属性移动到 style.xml
并不是一个好主意。最好在那里写 style 属性(background
、textSize
、font
等)
更新
对于较新的约束布局版本,此方法不再有效并会引发编译时错误。您应该按照@jeff-padgett 的建议使用空引用:
app:layout_constraintTop_toTopOf="@null"
要unset
样式中的约束集,请使用:
app:layout_constraintTop_toTopOf="@null"
我有一种带有默认 ConstraintLayout
行为的风格。现在我想重置 layout_constraintTop_toTopOf
属性 以获得 layout_constraintTop_toBottomOf
的正确约束。如何从视图中删除 layout_constraintTop_toTopOf
?
styles.xml:
<style name="ConstraintDefault">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">0dp</item>
<item name="layout_constraintBottom_toBottomOf">parent</item>
<item name="layout_constraintEnd_toEndOf">parent</item>
<item name="layout_constraintStart_toStartOf">parent</item>
<item name="layout_constraintTop_toTopOf">parent</item>
</style>
main_layout.xml:
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/include_toolbar"
layout="@layout/layout_toolbar" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rvDummy"
style="@style/ConstraintDefault"
app:layout_constraintTop_toBottomOf="@id/include_toolbar" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
style="@style/Fab"
app:srcCompat="@drawable/ic_add" />
</android.support.constraint.ConstraintLayout>
结果:
RecyclerView
重叠 Toolbar
因为 app:layout_constraintTop_toTopOf="parent"
对于像我认为约束布局有点矫枉过正的东西,你里面只有一个 recylcer 视图,我建议你改用协调器布局。 像这样
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="Your Context"
tools:showIn="@layout/activity_main">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
要取消约束布局 属性 必须用负数遮蔽它:
app:layout_constraintTop_toTopOf="-1" // Upd: It's DEPRECATED! Use the method below
事实证明,将 layout 属性移动到 style.xml
并不是一个好主意。最好在那里写 style 属性(background
、textSize
、font
等)
更新
对于较新的约束布局版本,此方法不再有效并会引发编译时错误。您应该按照@jeff-padgett 的建议使用空引用:
app:layout_constraintTop_toTopOf="@null"
要unset
样式中的约束集,请使用:
app:layout_constraintTop_toTopOf="@null"