Странное поведение макета ограничения Android

Версия моего макета ограничений — 1.0.0-alpha8 . После того, как я включил панель инструментов в свой макет, слева и справа от панели инструментов есть пространство, как на изображении ниже.

введите здесь описание изображения

Вот код моей панели инструментов

<?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"/>

person Mithun Sarker Shuvro    schedule 16.11.2016    source источник
comment
Целевой SDK и какая тема используется?   -  person Ankita Shah    schedule 16.11.2016
comment
@AnkitaShah targetSdkVersion 24 и тема Theme.AppCompat.Light.NoActionBar   -  person Mithun Sarker Shuvro    schedule 16.11.2016
comment
Попробуйте это Toolbar parent =(Toolbar) customView.getParent(); parent.setPadding(0,0,0,0);//for tab otherwise give space in tab parent.setContentInsetsAbsolute(0,0); или проверьте это stackoverflow.com/a/28086802/6005977   -  person Ankita Shah    schedule 16.11.2016
comment
@AnkitaShah, мой вопрос: почему он показывает это в предварительном просмотре и добавляет дополнительный код?   -  person Mithun Sarker Shuvro    schedule 16.11.2016


Ответы (1)


Во-первых, вам следует обновиться до 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 ограничения создаются по умолчанию.

person Nicolas Roard    schedule 17.11.2016