gpt4 book ai didi

android - ConstraintLayout 行为从 1.1.2 到 1.1.3 的奇怪变化

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:58 24 4
gpt4 key购买 nike

我注意到从 1.1.2 到 1.1.3 的 ConstraintLayout 行为有一个奇怪的变化,这会导致很多布局问题。另外,我个人认为这是一个bug,因为这个行为应该是不正确的。

检查以下布局:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/test1_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="test1"
app:layout_constraintTop_toTopOf="@id/test2_btn"
app:layout_constraintBottom_toBottomOf="@id/test2_btn"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/test2_btn"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintHorizontal_bias="1"/>

<Button
android:id="@+id/test2_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="test2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/test1_btn"/>
</android.support.constraint.ConstraintLayout>

以下是此布局在 ConstraintLayout1.1.21.1.3 中的呈现方式:

enter image description here

现在我们将 android:visibility="gone" 添加到 test1_btn。在ConstraintLayout版本1.1.2中,布局渲染如下:

enter image description here

这是完全合乎逻辑的,因为我们设置了 app:layout_constraintHorizo​​ntal_bias="1",所以 test2_btn 应该位于最右边链。现在如果我们使用 ConstraintLayout 版本 1.1.3,布局将呈现如下:

enter image description here

究竟发生了什么?为什么我失去了链偏见?

最佳答案

要在仍然使用版本 1.1.3 的同时获得旧行为,请将此属性添加到您的 <ConstraintLayout>标签:

app:layout_optimizationLevel="direct|barrier"

引入了 ConstraintLayout 库的 1.1 版 new optimizations .这些优化会解析您的 ConstraintLayout 并寻找可以删除或简化的约束。

从版本 1.1.2 开始,默认启用的唯一优化是直接障碍。版本 1.1.3 还有 enables chain by default .您可以通过手动指定应启用哪些优化来返回到 1.1.2 行为。


为了证明这是真正的问题,我尝试在使用 1.1.2 版时启用链优化。

第一个屏幕截图是使用版本 1.1.2 和您发布的布局(添加了 android:gone 属性)截取的。然后我将此属性添加到根 ConstraintLayout标签:

app:layout_optimizationLevel="chains"

现在我看到了您在 1.1.3 版中发现的相同行为:

关于android - ConstraintLayout 行为从 1.1.2 到 1.1.3 的奇怪变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com