Intereting Posts
«Предварительный просмотр затухает при рендеринге бесконечного цикла макета или неограниченной рекурсии», когда я дублировал некоторые TableRows Медленное приложение с фоновым изображением Использование android.app.Fragment с ViewPager в Android 3.0+ Как создать скользящий макет, например, основное меню Android? Номер версии для SQLite DB Как я могу получить правильный URL-адрес видеофайлу из встроенного видео? Обновление активности TextView из службы с использованием привязки к службе Как добавить нижний колонтитул в ListView? Пользовательский вид drawArc, обнаружение касания пользователя на пути рисования дуги Java.lang.IllegalStateException: нет активности Android Google+ не может получить код авторизации Использование значка в левом верхнем углу ActionBarSherlock для навигации Получение 0.0 для широты и долготы при отображении текущего местоположения на карте Как сместить изображение с помощью пальца в Android? H264 в Android?

View.inflate vs LayoutInflater

Вопрос прост – в чем основное отличие использования LayoutInflater и статического метода View.inflate() ? Существуют ли какие-либо недостатки в использовании любого из них или, возможно, они служат для разных целей?

Solutions Collecting From Web of "View.inflate vs LayoutInflater"

Если посмотреть на источник View.inflate() мы видим следующее:

 public static View inflate(Context context, int resource, ViewGroup root) { LayoutInflater factory = LayoutInflater.from(context); return factory.inflate(resource, root); } 

Итак, внутренне метод LayoutInflater inflate() класса View использует LayoutInflater , что заставляет меня предположить, что нет никакой разницы.

View.inflate() делает внутренне вызов LayoutInflator.inflate(resource, root) который в свою очередь вызывает LayoutInflator.inflate(resource, root, root != null) . Третий параметр – booleanAttachToRoot, который документы описывают как:

Должна ли зависеть иерархизация к корневому параметру? Если false, root используется только для создания правильного подкласса LayoutParams для корневого представления в XML.

Другими словами, с помощью View.inflate() вы не можете сказать инфлятору не добавлять новое представление к исходной корневой группе ViewGroup.

Я просто получаю от этого проблему. И вот что я нахожу.

View.inflate использовать LayoutInflator.inflate (id, Viewparent). Он будет игнорировать layoutparam родителя, если Viewparent paramater имеет значение NULL.

Но. Inflator.inflate имеет другой api inflate (id, View parent, boolean attach). Этот метод полезен, когда вам нужно инициализировать это представление с помощью родительского макета