我在android材料设计api工作,想要以网格格式显示一些数据.我试过两个GridLayout
,StaggeredGridlayout
看起来都一样.一般信息,我想问一下Gridlayout
和之间的区别是StaggeredGridlayout
什么?
谢谢.
网格视图:它是ViewGroup
在二维可滚动网格中显示项目.在此,每个网格具有相同的大小(高度和宽度).网格视图在视图中显示对称项.
交错网格视图:它基本上是一个扩展,Grid View
但在此每个网格具有不同的大小(高度和宽度).交错网格视图显示视图中的不对称项目.
实现交错网格视图的教程:
交错网格视图
Pinterest砌体布局交错网格视图
我在Oodles Technologies的时间教会了我交错.我会分享一下.
StaggeredGridLayout是一个LayoutManager,它就像一个网格视图,但在这个网格中,每个视图都有自己的大小(高度和宽度).它支持垂直和水平布局.
以下是创建交错网格的一些基本步骤 -
1)创建一个视图.
正如我们所知,staggeredgrid并不是一个直接视图,它是一个布局管理器,它以交错的网格形式展示儿童.我们使用RecyclerView作为交错网格的视图.这是我们的布局回收视图 -
2)设置StaggeredGridLayout LayoutManager.
一旦我们的视图准备就绪,让我们使用Layoutmanager在视图上创建网格.
RecyclerView favPlaces = (RecyclerView) findViewById(R.id.favPlaces); StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE); favPlaces.setLayoutManager(layoutManager); favPlaces.setHasFixedSize(true);
3)适配器膨胀交错网格视图.
为了首先以网格形式膨胀数据,我们需要一个代表该数据的布局.我们正在使用CardView,布局是 -
然后我们设置所有基本步骤,是时候完成我们的主要活动了.这是主要活动的完整代码 -
public class MainActivity extends AppCompatActivity { int placeImage[]= {R.drawable.agattia_airport_lakshadweep,R.drawable.nainital,R.drawable.goa, R.drawable.lotus_temple,R.drawable.valley_of_flowers,R.drawable.ranikhet,R.drawable.dehradun,R.drawable.nainital1}; String placeName[]= {"Lakshadweep, India","Nainital, India","Goa, India","Lotus-Temple, India","Valley-Of-Flowers, India","Ranikhet, India", "Dehradun, India","Nainital, India"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView favPlaces = (RecyclerView) findViewById(R.id.favPlaces); StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE); favPlaces.setLayoutManager(layoutManager); favPlaces.setHasFixedSize(true); ArrayListplaceList = getPlaces(); StaggeredAdapter staggeredAdapter = new StaggeredAdapter(placeList); favPlaces.setAdapter(staggeredAdapter); } private ArrayList getPlaces() { ArrayList details = new ArrayList<>(); for (int index=0; index