请教一个关于安卓多设备适配问题

2021-11-14 00:07:24 +08:00
 kldd529
现有几种设备分辨率的分别 1920*132 1920*480 1920*1080 等各种条形屏矩形屏。现在布局是几张卡片,然后要根据分辨率来自动排列,比如条形屏上就排成一行,矩形屏可以排成 2 行 5 列啥的(居中),然后还有竖屏(可能就排成 5 行 2 列),兼顾对齐美观。

现在产品要求写一个布局,然后会自动在不同设备上展示合理的排列,大佬们有什么方便的方案(产品要求要简单点实现,我直接内心 c 语言)

目前我想到的自定义个 viewgroup (经理说要搞这么复杂吗);弄个 recyclerview (每个卡片数据界面都不一样,多布局又是一堆代码)
10006 次点击
所在节点    Android
9 条回复
mx8Y3o5w3M70LC4y
2021-11-14 00:22:32 +08:00
试试 flexboxlayout ?
james2013
2021-11-14 09:52:11 +08:00
获取屏幕宽高信息,转化为几种枚举值,再根据这几种枚举值,来设置 RecyclerView 的列数
CharmingCheung
2021-11-15 11:48:14 +08:00
卡片宽度如果是一个固定值(同一设备下),可以用 GridLayoutManager ,(屏幕宽度 - 控件左右边距) / (卡片宽度 + 卡片之间 margin),计算得出 spanCount
反之可以参考一下一些开源的标签控件(关键词:LabelView 、TagView 之类)的实现方式,也是可以实现的
kldd529
2021-11-15 13:44:51 +08:00
@CharmingCheung 有的布局最后一张卡片长度是其他卡片的两倍
CharmingCheung
2021-11-15 14:11:10 +08:00
@kldd529 那就重写 setSpanSizeLookup ,把要两倍长度的 position 改成 return 2
kldd529
2021-11-15 14:25:19 +08:00
@CharmingCheung 谢谢回答
ChitandaEru520
2021-11-17 10:36:07 +08:00
如果卡片数量是固定的,可以试试 ConstraintLayout 里面的 Flow 流式布局
guoziq09
2021-11-17 17:05:48 +08:00
参考一下 FloatLayout
bugmaker233
2021-11-22 16:06:31 +08:00
recyclerView 完全可以啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/815215

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX