如何在Android上安排卡?

时间:2016-06-13 21:01:09

标签: java android android-layout material-design

我目前正在开发一款使用卡片的应用。我在Google官方应用中看到了卡的使用情况。

但是,谷歌应用程序在手机和平​​板电脑上有所不同。

在手机上它会显示卡片 - 彼此旁边没有太多空间。 (在横向模式下我的手机上也是如此)

在平板电脑上,它会将两张卡片放在一起。 (有时是一个大的,两个小的,有时两个相同的大小)

有人可以在这里解释他们是如何做到的,以及我需要添加什么样的XML或Java,以便在我的应用程序中添加类似的功能。 (我目前在我的应用程序中有工作卡,但是它们的宽度设置为fill_parent,因此它们会填满整个屏幕)

非常感谢您提前:))

3 个答案:

答案 0 :(得分:1)

他们使用RecyclerView和不同的LayoutManager来实现这一目标。

代码示例如下:

// during onCreate
RecyclerView rv = (RecyclerView)findViewById(R.id.recycler);
LayoutManager lm;
if(isPhone) {
   if(isLandscape) {
      lm = new GridLayoutManager(this, 2);
   } else {
      lm = new LinearLayoutManager(this);
   }
} else {
   if(isLandscape) {
      lm = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
   } else {
      lm = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
   }
}
rv.setLayoutManager(lm);
rv.setAdapter(... your adapter with the cards...);

要在两个项目之间实现不同的间距,您可以使用RecyclerView.ItemDecoration。如果您需要页眉,页脚或其他工具,我建议您查看我的库RecyclerViewTools on GitHub

答案 1 :(得分:0)

他们为res/layout-large/my_layout.xml等目录中的大型设备定义单独的布局文件。 Android会自动为设备选择合适的布局。有关更多信息,请查看以下链接:

https://developer.android.com/guide/practices/screens_support.html https://developer.android.com/training/multiscreen/screensizes.html

答案 2 :(得分:0)

Android允许根据您使用的资源文件夹为不同的屏幕配置使用不同的布局xml文件。

例如名为layout-sw400dp的布局资源文件夹将在租约400dp宽的屏幕上显示

阅读on the official documentation