PDA

View Full Version : Чем отличаются View и Layout в Android ?



crazy-mike
07-09-2016, 03:21 PM
На смайлики в этом идиотизме лушче вообще внимания не обращать - особенно когда вопрос становится актуальным ближе к 4му часу утра.

:111:
Допустим , что какой-то совсем придурок создал проект в Android Studio , но потом начал добавлять в соответствующие каталоги проекта свои собственные файлы ( картинки png , java , xml и т.д. ). Ну и при создании проекта ( скорее всего находясь в не совсем здравом уме и страдая провалами в памяти :111: ) выбрал Empty Activity. Вообще-то эта самая Activity должна бы что-то показать на экране. Показывать она может или View , или ViewGroup или Layout - но "не совсем пустой". И вот этот придурковатый девелопер компилирует проект через gradlew assembleDebug. До тех пор пока он не убрал все сгенерированные layout-ы ( res/layout/*.xml ) из проекта ведь почем-то пакет ( app-debug.apk :111: ) вообще не хотел строиться. Тогда приходит в голову мысль создать layout программным путём.

LinearLayout mu=new LinearLayout(this); // внутри Activity
Ну и setContentView(mu);

Понятно , что в этот layout добавляются всякие там widgets , к ним цепляются всякие EventListener-ы и т.д. Но суть от этого не меняется. Практически в этом варианте ведь layout - это почти что-то похожее на window в каком-то Windows 666.

И тут начинается самое смешное:

А как в этот layout теперь другой layout из ресурса добавить во время выполнения ( at runtime :111: ) ? :111:

Sea
07-10-2016, 10:46 AM
Если всегда будешь только Других компелировать
Свое не создашь

Твой земляк Пастернак дирижабль придумал
С грузоподъемностью 500 тонн
И который сам паркуется без тросов

Естественно для нужд амер армии

crazy-mike
07-11-2016, 07:08 AM
Если ...

Но там ведь "концептуально" ! :111: В Win32 API ( да и в Win16 тоже ) основными элементами UI были windows и controls. В java awt и swing ситуация ведь была аналогичной. В Adobe AIR тоже никому не приходило в голову создавать class MyLayout extends LinearLayout. А под Android как-то сплошная "нетрадиционная API-ориентация".
Имеется ввиду то - что из программы создаются совсем не "окна" , а чёрти-что под названием View или ViewGroup. При этом Layout-ы почему-то являются неявно разновидностями ViewGroup. И в итоге всё довольно сильно отличается даже от какого-нибудь MFC или WinForms в C#/Visual Basic.

crazy-mike
07-14-2016, 01:09 AM
Кстати - один layout в другой сравнительно просто из ресурса добавляется , но чуть запутано.

final public static void toolBar(LinearLayout B) {

LayoutInflater lI = MainActivity.me.getLayoutInflater();
View H=lI.inflate(R.layout.toolbar,B,true);
final ImageButton IE=(ImageButton)B.findViewById(R.id.bexit);
// Но искать компоненты по идентификатору из "добавленого" нужно именно там , куда "inflate". Довольно непривычно по сравнению с Win32 API :111:

}