1
  • 最佳答案
    1. 跟随系统字体其实有极高的ui要求,比如一个按钮位置就是那么宽,你设置超大字体,这个按钮容纳不了,那你的ui怎么做。类似情况还有很多,字体变大之后,ui如何布局。
    2. 正常逻辑不跟随系统变化,内部自己做字体调整。多大,最大多少。最少是多少。必须是有规划的,不是随便做的。
    1139423796017500160  评论     打赏       工头断点
    • RUOQ  回复 @工头断点
      1.有没有一种方案是写多套布局,根据字体显示布局, 2.退一万步来说,写出了这种适应性极高的布局,一般来说,各个控件之间的依赖必定非常高,可维护性变得很差
      RUOQ 2022-04-11 15:26   回复 1302969105866940416
    • Aka安卓菜鸟  回复 @RUOQ
      你这个方案我是想过的,和适配不同屏幕大小的手机一样。但问题是 用户系统字体大小的那个值,哪怕是取中间值也是有好几种情况的 等于说你需要同一个布局 写很多套。
      Aka安卓菜鸟 2022-04-11 15:36   回复 1346006481350291456
    • 工头断点  回复 @RUOQ
      做套布局,你是想累死自己吗,哈哈,如果需求一改,你得改多套。
      工头断点 2022-04-11 15:39   回复 1139423796017500160
    • 工头断点  回复 @Aka安卓菜鸟
      这个可以查查,动态改变字体大小方案,应该有成熟方案的,不可能写多套布局。做适配可以生成多个dim文件多套字体大小,这种方案是不改变大小的方法,很成熟。但是类似微信这种改字体的,得查查。没线上经验
      工头断点 2022-04-11 15:41   回复 1139423796017500160
    • Aka安卓菜鸟  回复 @工头断点
      嗯嗯谢谢,dim文件多套字体大小这个屏幕适配是有使用的,但是因为用的是Sp 用户把系统字体设置成最大的时候,就错位了。然后现在想要解决系统字体显示的这个问题。 我感觉已经不是简单的屏幕适配了。 我自己设想的方案是 设一个max 最大只给他这么大了 但是还想知道有没有更好的办法
      Aka安卓菜鸟 2022-04-11 15:45   回复 1346006481350291456
    • 工头断点  回复 @Aka安卓菜鸟
      有时间可以看看微信如何处理的,看看改变字体的逻辑,微信是没有加固的,代码随便看,除非这个逻辑丢c中了。刚刚查了下没找到相关的demo,方案是动态改变resource的那个Scale,act重建
      工头断点 2022-04-11 16:00   回复 1139423796017500160
    • 工头断点  回复 @Aka安卓菜鸟
      看了下安卓的微信,改变之后要重启微信
      工头断点 2022-04-11 16:03   回复 1139423796017500160
    • Aka安卓菜鸟  回复 @工头断点
      对 我查找到的资料也没有很好的办法,大多都是重写getResources然后设置一下值来实现字体的动态变化。 感觉确实要跟随系统字体大小比较难以适配。 还是像微信那样 布局重新适配调整一下。 然后新增一个给用户调字体大小的功能比较合适
      Aka安卓菜鸟 2022-04-11 16:16   回复 1346006481350291456
    • RUOQ  回复 @工头断点
      没事,我站着说话不腰疼,这种需求让它烂在提出的瞬间,正经人谁写多套布局
      RUOQ 2022-04-11 16:32   回复 1302969105866940416
    • 工头断点  回复 @RUOQ
      哈哈,这个还是学微信比较好
      工头断点 2022-04-11 16:51   回复 1139423796017500160
    • 工头断点  回复 @Aka安卓菜鸟
      是的,大厂的方案模仿就行了,你可以看看头条app是不是也重启
      工头断点 2022-04-11 16:52   回复 1139423796017500160
    • RUOQ  回复 @工头断点
      像这种修改字体,修改语言都要重启的,像这种做自定义控件,然后给入口让用户修改字体,不知道效果怎么样
      RUOQ 2022-04-11 17:00   回复 1302969105866940416
    • 工头断点  回复 @RUOQ
      如果是这样,让我想到了做全局setTextSize的hook,也就是所有setTextSize你都hook住,然后在这里切一刀加入Scale,你修改Scale就行了
      工头断点 2022-04-11 17:20   回复 1139423796017500160
    • RUOQ  回复 @工头断点
      这种也行,就不用修改整个系统的字体了
      RUOQ 2022-04-11 17:22   回复 1302969105866940416
    • Aka安卓菜鸟  回复 @工头断点
      哈哈对 跟着混就好了
      Aka安卓菜鸟 2022-04-11 17:24   回复 1346006481350291456
  • Android 仿微信/支付宝 字体大小 调整控件 - 掘金 (juejin.cn)

    感觉这个也是一种方案,自定义控件,然后给一个用户更改App字体的入口,

    1302969105866940416  评论     打赏       RUOQ
    • Aka安卓菜鸟  回复 @RUOQ
      对,项目内控制的话还是很好做的。案例也比较多。主要是通过修改Scale的值
      Aka安卓菜鸟 2022-04-11 17:23   回复 1346006481350291456
  • 我的一些经验

    1.不要相信当前显示的内容,全部按照最极端的情况来设计

    比如当前显示的内容只有一行,但是如果你的内容字体变了或者字体的内容变多了,那么这个控件内容很容易超出边界或者和其他控件重叠,这时要考虑超出部分是省略还是换行处理,考虑好最大行数

    2.处理好控件和控件之间的间距,控件采用wrap_content,很多情况下,我们在编辑器根据父容器定位,写出来的布局很美观,但是更改字体后,由于没有考虑到控件与控件之间的关系,很容易gg,这种比较烦的是一个改,可能全部其他都要改,可维护性变低,

    3.不要迷信百分比,这个和父容器定位差不多,因为这些在一些比较小的屏幕上会发生相互挤压,

    4.尽可能采用约束性布局和相对布局吧


    1302969105866940416  评论     打赏       RUOQ
    • Aka安卓菜鸟  回复 @RUOQ
      嗯嗯谢谢,就基本的屏幕适配嘛。我自己了解了一下。我认为一般是不建议做跟随系统样式改变字体大小。太复杂了 而且不好去适配手机。 微信和QQ也只是在自己App里内部 提供了一个改变字体大小的功能,这样才好控制布局的展示。
      Aka安卓菜鸟 2022-04-11 14:42   回复 1346006481350291456
相关问题
幻影~ · 安卓
2024-04-26 19:25 10 4
deanhu · AOSP
2024-04-25 21:53 3 10
幻影~ · 提问
2024-04-13 20:13 10 2
幻影~ · 找工作
2024-04-07 10:44 18 2
幻影~ · 问题
2024-03-31 17:20 7 2
TONYGFX · AOSP
2024-03-28 17:11 4 2