Прежде всего: это только предварительный просмотр макета. Вы можете редактировать XML и продолжать свой проект, и он ничего не повлияет на него.
Макет рендеринга буквально запускает ваши классы Java для создания предварительного просмотра с помощью некоторой издевавшейся реализации или реального устройства Android, похожего на тестирование смешных реализаций.
Так что это сообщение просто сообщает вам, что эта издевающаяся система не смогла выполнить предварительный просмотр.
Но если вы действительно хотите просмотреть предварительный просмотр, вы должны проверить, где в вашем классе вы полагаетесь на переменные или объекты, которые присущи вашему приложению, к которым у макетной системы не будет доступа.
Пример, если ваш пользовательский вид делает некоторые специальные вещи во OnLayout:
@Override onLayout(...){
int value = MyLayoutDetailsCalculation.getExtraPadding(getContext());
}
, что это код, который звонит на статический метод на отдельный класс, который использует контекст (возможно получение значения из системных ресурсов или диспетчера дисплеев), и это не будет хорошо работать в среде с наддувом, и предварительный просмотр не сможет его отобразить.
воистину счастлив, это легко исправить:
@Override onLayout(...){
int value;
if(isInEditMode()){ // that returns true if this code is being executed by AndroidStudio mocked system.
value = 0; // any value that makes OK for your custom class to properly show a preview
} else {
value = MyLayoutDetailsCalculation.getExtraPadding(getContext());
}
}