Android约束布局奇怪的行为

时间:2016-11-16 13:23:36

标签: android android-constraintlayout

我的约束布局的版本是1.0.0-alpha8。在我的布局中包含工具栏后,工具栏的左侧和右侧都有空间,如下图所示

enter image description here

这是我的工具栏的代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    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="?attr/actionBarSize"
    android:background="@color/colorPrimary">


</android.support.v7.widget.Toolbar>

我已按照以下方式包含在我的布局中

<include
    layout="@layout/toolbar_top"
    android:id="@+id/topPanel"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"/>

我没有在布局文件的根元素中使用任何额外的填充或边距。

另一个重要的事情是,如果我编译或构建程序,我的代码会自动更改,例如

<include
    layout="@layout/toolbar_top"
    android:id="@+id/topPanel"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"/>

更改为

<include
    layout="@layout/toolbar_top"
    android:id="@+id/topPanel"
    android:layout_height="wrap_content"
    android:layout_width="368dp"/>

指南还添加了一些我没写过的附加值,比如layout_editor_absoluteX自动添加。

<android.support.constraint.Guideline
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/guideline1"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.15"
    tools:layout_editor_absoluteX="58dp"/>

1 个答案:

答案 0 :(得分:14)

首先,您应该更新到ConstraintLayout beta 4。

现在,您遇到的根本问题是您在工具栏上使用match_parent - ConstraintLayout不支持此功能。你需要添加:

app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"

并使用0dp代替match_parent:

<include
    layout="@layout/toolbar_top"
    android:id="@+id/topPanel"
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"/>

请注意,您可以通过右键单击组件并选择image

来轻松创建这些属性

在Android Studio 2.2上,您需要按住键来创建约束,在Android Studio 2.3上它会默认创建约束。