Подтвердить что ты не робот

Макет сетки Vs. Макет таблицы

Я работаю над сайтом android для бронирования, как система бронирования авиабилетов. Чтобы получить содержимое, скажем, всех доступных авиакомпаний, предназначенных для поиска пассажиров, это отображается на экране мобильного телефона.

Какой из них, макет таблицы или макет сетки будет эффективен с учетом времени загрузки экрана, потребления системной памяти и дополнительных функций?

4b9b3361

Ответ 1

** EDIT: эта строка была правильной, когда этот ответ был написан, но больше не применяется к 99,9% + всех Android-устройств: There is no GridLayout in the Android API. **

(Примечание: с уровня API 14, наконец, GridLayout, см. ответы ниже. Кроме того, библиотека поддержки V7 добавляет поддержку GridLayout вплоть до API 7. Однако это описание ответа GridView по-прежнему является точным и очень хорошо указано).

Если вы имеете в виду GridView, TableLayout и GridView - это совершенно разные вещи.

GridView в основном похож на ListView, но элементы расположены в строгой сетке. Он подключен к адаптеру и получает просмотры из адаптера, через который пользователь прокручивает его. Все элементы в сетке должны быть одного размера. Пользователь может перемещать видимый селектор через каждый элемент - цель GridLayout - отображать данные из адаптера и позволяет пользователю перемещаться и выбирать каждый из отображаемых элементов. Единственное отличие от ListView заключается в том, что элементы помещаются в сетку вместо вертикального списка.

TableLayout - это просто менеджер компоновки, несколько похожий на таблицу в HTML. Он сам не прокручивает; чтобы иметь что-то, что свитки вы должны положить TableLayout в ScrollView. Это означает, что все отображаемые вами данные должны быть заполнены в TableLayout вверх, поэтому ScrollView знает, сколько всего пространства он должен прокручивать. Он также не дает вам прямого выбора или взаимодействия, потому что TableLayout не имеет элементов, это просто менеджер компоновки.

Вы фактически не предоставили достаточно полезной информации о том, что вы на самом деле пытаетесь сделать для кого-либо, чтобы рекомендовать, что использовать. Это зависит от того, что именно вы хотите.

Я имею в виду то, что будет полезно с точки зрения "дополнительных функций"?!? Ну, какие функции вы ищете!

В любом случае, как правило, представление на основе адаптера должно использоваться для любой ситуации, когда у вас есть значительный объем данных, которые прокручивается пользователем; они намного эффективнее, чем создавать всю иерархию представлений, чтобы отображать ваши данные. Они также являются единственными, которые автоматически предоставляют выбор по каждому элементу и другие подобные функции. Основной вид этого приложения - ListView, хотя GridView также может использоваться.

Ответ 2

Начиная с android 4.0, существует такая вещь, как GridLayout. GridLayout всегда предпочтительнее TableLayout. Он предоставляет все, что у вас уже есть в TableLayout, и может также заменить другие макеты.

Кажется, это классно, и кажется, что Google хочет, чтобы он был так же популярен, как LinearLayout (согласно их видео с Android 4.0).


EDIT: если вам нужно показать много предметов, подумайте о том, как использовать RecyclerView с GridLayoutManager. Это может помочь с точки зрения использования памяти и процессора.

Ответ 3

Конфигурации TableLayout обычно просты к как GridLayout поддерживает как прокрутку строк, так и столбцов. Таблицы могут быть удалены, поскольку они не требуются GridLayout. Для тот же пользовательский интерфейс, GridLayout, как правило, будет быстрее и меньше чем таблица TableLayout.

TableLayout поддерживается во всех версиях Android, в то время как GridLayout требует уровня 11 (Android ICS 4.0) или выше, но его можно легко добавить через поддержку librarry v7 для поддержки уровня 7 (Android 2.1) или выше

Ответ 4

Это хорошая презентация GridLayout, которая также описывает различия по сравнению с TableLayout: http://blog.stylingandroid.com/archives/669

Одно из самых важных различий заключается в том, что он доступен только в ICS (Ice Cream Sandwich) и новее. В настоящее время это означает менее 30% доли рынка, поэтому для большинства разработчиков ответ будет следующим: подождите несколько лет, прежде чем использовать GridLayout. YMMV, конечно.

Ответ 5

Я думаю, что GridView должен работать лучше, потому что он реализован с использованием утилиты просмотра и материалов, унаследованных от AbsListView. GridView сложнее развернуть, потому что вы должны использовать его с Adapter, но он будет работать эффективно, если у вас много тяжелых изображений для загрузки, например изображений

Ответ 6

В макетах сетки компоненты могут автоматически установить вид, взяв numcolumns = "autofit". Здесь нам не нужно указывать, сколько строк и столбцов нам нужно, но в макете таблицы, там у нас нет такого варианта, и мы должны установить, сколько строк и столбцов нам нужно. В макете таблицы мы не можем вставить более одного элемента в строку без использования относительного макета

Ответ 7

Я думаю, что TableLayout будет более простым в использовании. Для GridLayout вам необходимо создать пользовательские адаптеры и, следовательно, создать более сложное приложение.

Глядя на различные secensizes, GridLayout выберет большое количество столбцов и строк самостоятельно в соответствии с содержимым, и это будет более гибким с добавлением элементов.

Также GridLayout будет более гибким, но это еще предстоит сделать.