Предварительный просмотр макета Android Studio 3.1 не показывает предварительный просмотр для некоторых макетов

С сегодняшнего утра я начал сталкиваться с этой странной проблемой. Панель предварительного просмотра макета Android Studio и представление «Дизайн» не отображали некоторые из моих макетов, которые были в порядке, пока я не обновил Android Studio с 3.0.1 до 3.1.

Я пробовал следующее, что не помогло:

  1. Обновлены инструменты сборки с 27.0.2 до 27.0.3.
  2. Обновлена ​​библиотека поддержки с 27.0.2 до 27.1.1.
  3. Библиотека компоновки ограничений обновлена ​​с 1.1.0-beta5 до 1.1.0-beta6.
  4. Синхронизировал проект с файлами Gradle несколько раз
  5. Очищайте и перестраивайте проект несколько раз
  6. Недействительная и перезапущенная Android Studio
  7. Закрыл проект из меню «Файл» и снова открыл его (я подозревал, что это произошло из-за неправильного управления кешем предварительного просмотра макета, который не очищался)
  8. Наконец-то перезагрузил компьютер

Детали Android-студии:

Android Studio 3.1
Build #AI-173.4670197, built on March 22, 2018
JRE: 1.8.0_152-release-1024-b02 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 8.1 6.3

person Monish Kamble    schedule 07.04.2018    source источник


Ответы (4)


В моем случае я выполнил сборку, а затем нажал Принудительно обновить макет, и начался предварительный просмотр.

Попробуйте, решит ли это вашу проблему,

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

person Sreedhu Madhu    schedule 12.04.2018
comment
Нет, это не сработало. Я пробовал Force Refresh Layout много раз, прежде чем опубликовать этот вопрос. Могу ли я узнать вашу версию Android Studio. - person Monish Kamble; 12.04.2018
comment
@Monish Моя версия 3.1, извините, мой ответ не помог - person Sreedhu Madhu; 12.04.2018

После многих неудачных попыток и отправки его в систему отслеживания ошибок Android Studio и повторной попытки. Я обнаружил, что это произошло из-за отсутствия "+".

Пример макета для демонстрации проблемы

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/rightTextView"
        style="@style/Base.TextAppearance.AppCompat.Medium"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:padding="12dp"
        android:text="This is a sample TextView at Right"
        app:layout_constraintStart_toEndOf="@+id/leftTextView" />

    <TextView
        android:id="@id/leftTextView"
        style="@style/Base.TextAppearance.AppCompat.Large"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="12dp"
        android:text="Left"
        android:textColor="@color/colorAccent" />

</android.support.constraint.ConstraintLayout>

Проблема возникла из-за отсутствия + в объявлении идентификатора leftTextView. После смены строки (строка № 18)

android:id="@id/leftTextView"

to

android:id="@+id/leftTextView"

Панель предварительного просмотра макета Android Studio начала отображать макет.

Примечание. Я всегда объявлял идентификаторы представления (т. е. "@+id") только один раз в файле макета при его первом появлении (объявлении или ссылке), а затем до сих пор не было проблем с предварительным просмотром макета или запуском приложения

person Monish Kamble    schedule 07.04.2018
comment
Большое спасибо ! Я искал это решение, и оно сработало. Почему @id не работает?? - person Mackovich; 09.04.2018
comment
Для справки, @+id добавляет id в список доступных id, @id ищет тот, который уже добавлен. Кажется, что предварительный просмотр не смог найти представление, и макет не отобразился. Файл R предварительно скомпилирован и генерируется по мере того, как вы кодируете - person solidogen; 08.10.2020

Для версии Android Studio 3.1 Gradle с подключаемым модулем версии 28.0.0 добавьте implementation 'com.android.support:appcompat-v7:28.0.0-alpha1' вместо implementation 'com.android.support:appcompat-v7:28.0.0-rc01'.

person Niraj Bhat    schedule 16.08.2018

Моя проблема была в NDK - просто обновите его и почистите + пересоберите проект.

person Artem Winokurov    schedule 02.03.2020