Android屏幕适配之动态设置单个控件的宽高比例

前言:这个问题出现在我做平板项目的时候,需要横排显示一张图片以及其他控件,如下图:


要求图、文各占一半大小,图片的宽高比例目测是1:2。这种情况不适合把高度写死,因为iPad的屏幕大小差异有些大,高度写死图片hin容易变形,因此我们就需要动态去设置这个图片的宽高。

正题:首先我们已知图片宽度是屏幕的一半,所以我们只要获取图片的宽度,然后设置高度为宽度的1/2即可。

         img.post(new Runnable() {
            @Override
            public void run() {
                int w = img.getWidth();
                int h = w / 2;
                img.setLayoutParams(new LinearLayout.LayoutParams(w, h));
            }

        });

       这里用了post方法来延迟获取宽度,是为了防止在img自身未完成测量的时候该方法过早调用,这种情况得到的宽度为0;

附加提示:如果你的控件有margin值,此时就不管用了,可以转换为让其父控件设置padding值。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值