Ограничение макета не отображается в файле макета и возникает ошибка при раздувании любого вида на нем

Я использую макет ограничения (android.support.constraint.ConstraintLayout) в качестве основного макета в моем файле XML. Поскольку мы получаем два представления макета (один для просмотра пользователя, а второй - для перетаскивания представления и обеспечения связи между ними). ​​Но я получаю только одно окно, которое совершенно пустое и выглядит следующим образом: - < a href="https://i.stack.imgur.com/LRp2N.png" rel="noreferrer">  введите здесь описание изображения

И получаю эту ошибку при использовании любого представления в моем макете. Пожалуйста, проверьте изображение ниже для этого

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

Мой файл макета выглядит следующим образом: -

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/constraintLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:layout_editor_absoluteY="25dp"
    tools:layout_editor_absoluteX="0dp">

    <ImageView
        android:id="@+id/image_shot"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteY="0dp"
        tools:layout_editor_absoluteX="0dp" />

</android.support.constraint.ConstraintLayout>

Я пробовал приведенное ниже решение на SO, но оно у меня не работает. Пожалуйста, проверьте ссылку, которую я искал

1. Первая ссылка
2. Вторая ссылка
3. Третья ссылка

Пожалуйста, помогите мне решить эту проблему. Спасибо.


person Ravindra Kushwaha    schedule 13.07.2017    source источник
comment
Это отображение вы увидите, если класс ConstraintLayout не будет найден. Пожалуйста, поделитесь, какую версию Android Studio вы используете, и ваши скрипты gradle.   -  person Cheticamp    schedule 13.07.2017
comment
Тем не менее пустой экран появляется при предварительном просмотре макета :( ..Спасибо за вклад   -  person Ravindra Kushwaha    schedule 14.07.2017


Ответы (5)


Это потому, что вы не даете constraint за ImageView. Когда вы дадите constraint ImageView, это предупреждение будет удалено.

Как показано ниже.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:id="@+id/constraintLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="25dp">

    <ImageView
        android:id="@+id/image_shot"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:src="@mipmap/ic_launcher"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

установите свой градиент, как показано ниже.

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-kapt' // for Databinding

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.hellokotlin"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    android {
        dataBinding {
            enabled = true
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:25.4.0'
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:recyclerview-v7:25.4.0'
    kapt 'com.android.databinding:compiler:2.3.1'       // for Databinding
}

Поддержка версии lib и buildToolsVersion

buildToolsVersion "25.0.2"

defaultConfig {
        applicationId "com.hellokotlin"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
implementation 'com.android.support:appcompat-v7:25.4.0'
person Mehul Kabaria    schedule 14.07.2017

Как говорит ошибка, ваш макет не является ограничением, поэтому он застрял в левом верхнем углу. Чтобы добавить ограничения с помощью представления дизайна, сначала измените абсолютные значения, например. :

tools:layout_editor_absoluteY="25dp"
tools:layout_editor_absoluteX="25dp"

и чем ограничивать ваш макет, как вы хотите. В примере ниже он находится в центре.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:id="@+id/constraintLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:layout_editor_absoluteY="81dp"
    tools:layout_editor_absoluteX="0dp">

    <ImageView
        android:id="@+id/image_shot"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        />

</android.support.constraint.ConstraintLayout>
person Android    schedule 13.07.2017
comment
Спасибо за ввод. Тем не менее пустой экран появляется при предварительном просмотре макета :( - person Ravindra Kushwaha; 14.07.2017

Попробуйте начать с

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/constraintLayout"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>

Если предварительный просмотр не отображается, попробуйте изменить выбранное устройство или проверить реализованную библиотеку в gradle implementation 'com.android.support.constraint:constraint-layout:1.0.2'

person Stanislav Bondar    schedule 13.07.2017
comment
Я уже использовал «реализация» com.android.support.constraint:constraint-layout:1.0.2, но все еще та же проблема. Спасибо за ввод - person Ravindra Kushwaha; 13.07.2017
comment
Тем не менее пустой экран появляется при предварительном просмотре макета :( - person Ravindra Kushwaha; 14.07.2017
comment
Спасибо за вклад .. +1 за ваши усилия - person Ravindra Kushwaha; 28.07.2017

Просто удалите этот атрибут tools:showIn="@layout/activity_main" from xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

Чистый проект

person Muhammad Waleed    schedule 16.09.2018

Я столкнулся с той же проблемой, поскольку я был новичком в макете ограничения.

Добавление implementation 'com.android.support.constraint:constraint-layout:1.1.3' в файл build.gradle (модуль) решило мою проблему.

person Sandipta Sahoo    schedule 21.09.2018
comment
Спасибо за вклад +1 за усилия - person Ravindra Kushwaha; 04.06.2020