GridView VS GridLayout в додатках для Android


212

Мені потрібно використовувати Grid для реалізації Photo Browser в Android. Отже, я хотів би знати різницю між GridView і GridLayout .

Так що я виберу правильний.

В даний час я використовую GridView для динамічного відображення зображень.

Відповіді:


264

GridView є ViewGroup , який відображає елементи в двовимірної сітці прокруткою. Елементи в сітці надходять із ListAdapter, пов'язаного з цим представленням.

Це те, що ви хочете використовувати (продовжуйте використовувати). Оскільки GridView отримує свої дані від ListAdapter, єдиними даними, завантаженими в пам'ять, будуть ті, що відображаються на екрані. GridViews, як ListViews, повторно використовує та переробляє свої представлення для кращої продуктивності.

Тоді як GridLayout - це макет, який розміщує своїх дітей у прямокутній сітці.

Він був введений у рівні API 14, а нещодавно був підтриманий у Бібліотеці підтримки. Основна його мета - вирішити проблеми вирівнювання та продуктивності в інших схемах. Перевірте цей підручник, якщо хочете дізнатися більше про GridLayout.


15
GridLayout також є ViewGroup.
Дмитро Лазерка

22
Я ніколи не казав, що це не так. Я просто наголошував на тому, що це макет.
Беніто Бертолі

16
@laki один сценарій був би, якщо ви хочете завантажити купу зображень у форматі типу Grid. Використання GridView завантажує в пам'ять лише ті види, які видно на екрані. Тоді якщо ви використовуєте GridLayout, вам доведеться завантажувати всі зображення, які будуть відображатись у будь-який час, що спричинить помилкову помилку в більшості пристроїв.
BigBen3216

15
Основна різниця, здається, полягає в тому, що GridView може вміщувати лише однакову ширину стовпця по всьому. Макет сітки дозволяє мати вміст, що охоплює 2 або більше стовпців. Макет сітки дозволяє створювати екрани, що містять вміст, що охоплює різні розміри стовпців
Ясір,

58
Перший сценарій @laki: намалюйте калькулятор, GridLayout. Сценарій другий: намалюйте галерею, GridView.
Маріо Веласко
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.