我目前正在开发一款使用卡片的应用。我在Google官方应用中看到了卡的使用情况。
但是,谷歌应用程序在手机和平板电脑上有所不同。
在手机上它会显示卡片 - 彼此旁边没有太多空间。 (在横向模式下我的手机上也是如此)
在平板电脑上,它会将两张卡片放在一起。 (有时是一个大的,两个小的,有时两个相同的大小)
有人可以在这里解释他们是如何做到的,以及我需要添加什么样的XML或Java,以便在我的应用程序中添加类似的功能。 (我目前在我的应用程序中有工作卡,但是它们的宽度设置为fill_parent,因此它们会填满整个屏幕)
非常感谢您提前:))
答案 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宽的屏幕上显示