kldd529
V2EX  ›  Android

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

  •  
  •   kldd529 · Nov 14, 2021 via Android · 13463 views
    This topic created in 1642 days ago, the information mentioned may be changed or developed.
    现有几种设备分辨率的分别 1920*132 1920*480 1920*1080 等各种条形屏矩形屏。现在布局是几张卡片,然后要根据分辨率来自动排列,比如条形屏上就排成一行,矩形屏可以排成 2 行 5 列啥的(居中),然后还有竖屏(可能就排成 5 行 2 列),兼顾对齐美观。

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

    目前我想到的自定义个 viewgroup (经理说要搞这么复杂吗);弄个 recyclerview (每个卡片数据界面都不一样,多布局又是一堆代码)
    9 replies    2021-11-22 16:06:31 +08:00
    mx8Y3o5w3M70LC4y
        1
    mx8Y3o5w3M70LC4y  
       Nov 14, 2021 via iPhone
    试试 flexboxlayout ?
    james2013
        2
    james2013  
       Nov 14, 2021
    获取屏幕宽高信息,转化为几种枚举值,再根据这几种枚举值,来设置 RecyclerView 的列数
    CharmingCheung
        3
    CharmingCheung  
       Nov 15, 2021
    卡片宽度如果是一个固定值(同一设备下),可以用 GridLayoutManager ,(屏幕宽度 - 控件左右边距) / (卡片宽度 + 卡片之间 margin),计算得出 spanCount
    反之可以参考一下一些开源的标签控件(关键词:LabelView 、TagView 之类)的实现方式,也是可以实现的
    kldd529
        4
    kldd529  
    OP
       Nov 15, 2021
    @CharmingCheung 有的布局最后一张卡片长度是其他卡片的两倍
    CharmingCheung
        5
    CharmingCheung  
       Nov 15, 2021
    @kldd529 那就重写 setSpanSizeLookup ,把要两倍长度的 position 改成 return 2
    kldd529
        6
    kldd529  
    OP
       Nov 15, 2021
    @CharmingCheung 谢谢回答
    ChitandaEru520
        7
    ChitandaEru520  
       Nov 17, 2021
    如果卡片数量是固定的,可以试试 ConstraintLayout 里面的 Flow 流式布局
    guoziq09
        8
    guoziq09  
       Nov 17, 2021
    参考一下 FloatLayout
    bugmaker233
        9
    bugmaker233  
       Nov 22, 2021
    recyclerView 完全可以啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5947 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 02:05 · PVG 10:05 · LAX 19:05 · JFK 22:05
    ♥ Do have faith in what you're doing.