AndroidStaggeredGrid梯形网格视图开源库分析
AndroidStaggeredGrid 是一个支持实现多行多列且可变尺寸的阶梯形网格视图的开源库。
StaggeredGridView 的开发是因为该开源作者在实现其 Etsy app 时发现 Google 的 Android 库中没有提供相关功能以实现其需求,即需要在 landscape & portrait 两种模式下显示不同的行、列,且能在模、竖屏都保持单元格显示同步, 运行稳定,还要支持自定义页头 & 页脚。
该库使用简单,可以通过作者提供的/sample app的源码了解使用细节,如图:
总的来说使用该库只需3步:
1. 将 StaggeredGridView 加入到需要显示的布局文件中,如:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <com.etsy.android.grid.StaggeredGridView android:id="@+id/grid_view" android:layout_width="match_parent" android:layout_height="match_parent" app:item_margin="8dp" app:column_count_portrait="2" app:column_count_landscape="3" /> </FrameLayout>
2. 配置属性:
item_margin - The margin around each grid item (default 0dp). column_count_portrait - The number of columns displayed when the grid is in portrait (default 2). column_count_landscape - The number of columns displayed when the grid is in landscape (default 3). grid_paddingLeft - Padding to the left of the grid. Does not apply to headers and footers (default 0). grid_paddingRight - Padding to the right of the grid. Does not apply to headers and footers (default 0). grid_paddingTop - Padding to the top of the grid. Does not apply to headers and footers (default 0). grid_paddingBottom - Padding to the bottom of the grid. Does not apply to headers and footers (default 0).
3. 配置适配器,这与使用GridView/ListView时基本一样:
ListAdapter adapter = ...; StaggeredGridView gridView = (StaggeredGridView) findViewById(R.id.grid_view); gridView.setAdapter(adapter);
说明: 由于列宽在屏幕方向横竖变化时亦会变化, 网格视图需要每个单元格维护自身的宽高比例,该库提供了 DynamicHeightImageView 类作为示例实现单元格视图高度按其宽度变化的功能。
评论
ALGridViewiOS 网格视图
ALGridView是使用Swift编写的简单网格视图。//-- Full initializer (passing margins, padding)let frame = CGRect(x: 10
ALGridViewiOS 网格视图
0
ReorderableGridView-Swift网格视图解决方案
ReorderableGridView-Swift是可记录的网格视图解决方案,是使用Swift编写的,是UIScrollView的子类,不是一个集合视图布局。
ReorderableGridView-Swift网格视图解决方案
0
EmberTableJavaScript 数据网格库
EmberTable.js是一个JavaScript数据网格库。它允许你控制大数据集,并用于显示。这是一个简单的扩展。它支持重排序,列调整大小,可自定义并且易于配置。依赖emberjquery-uij
EmberTableJavaScript 数据网格库
0
Sensei GridjQuery 数据网格库
SenseiGrid是简单的数据网格库,使用JavaScript编写。i目标:简单极小的代码基础扩展性稳定性在线演示
Sensei GridjQuery 数据网格库
0
android-viewflowAndroid 视图切换库
View Flow for Androidandroid-viewflow 是 Android 平台
android-viewflowAndroid 视图切换库
0
android-viewflowAndroid 视图切换库
ViewFlowforAndroidandroid-viewflow是Android平台上一个视图切换的效果库。ViewFlow相当于AndroidUI部件提供水平滚动的ViewGroup,使用Ada
android-viewflowAndroid 视图切换库
0