LinearLayout权重算法

插曲

昨天去面试,首先要在网上笔试,其中有一道题就是view权重分配的算法。因为权重用得比较少,且一般都是设置0dp或者matchparent,这两种情况下比较好计算,view宽高肉眼可调。但是今天遇到的题是另一种情况:给定屏幕宽度(dp)和两个view的宽度(dp)和权重,然后求最后view的宽度。

算法

view最终宽高 = view原始宽/高 + 按比例分配的屏幕剩余宽高

  • 例子:
    假设LinearLayout(横向布局)作为根布局,且宽度为400dp;
    根布局下有两个button,分别为btn1(宽度300dp,权重为2)和btn2(宽度300dp,权重为3);

    由此得出屏幕剩余宽度 = 400dp - (300dp + 300dp)= -200dp;
    最终btn1宽度 = 原始宽度 + 权重比 * 屏幕剩余宽度 = 300dp + 2 /(2 + 3)* (-200dp)= 220dp;
    最终btn2宽度 = 原始宽度 + 权重比 * 屏幕剩余宽度 = 300dp + 3 /(2 + 3)* (-200dp)= 180dp;

以上只计算了宽度的权重分配,高度权重分配类似。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容