Android 动态获取控件的宽高,并动态设置控件宽高

本文介绍了在Android开发中如何动态获取TextView的宽度和高度,并将其应用到ImageView上,实现视图尺寸的动态适配。通过Java代码示例,展示了如何在布局中实现控件尺寸的灵活调整,提升应用的适配效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android项目开发中,为了更加好的去进行适配,某些时候就需要用到动态获取A控件的宽高,将A控件宽高的值动态设置给B控件,例如我在xml文件中将TextView和ImageView的宽高都设置为wrap_content,接下来将动态获取TextView的宽高,然后将宽高值设置给IaageView

<ImageView
            android:id="@+id/iv_is_read"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />

        <TextView
            android:id="@+id/tv_read"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:text="我是个测试文本"
            android:textColor="@color/grayNine"
            android:textSize="12sp" />

在java代码中

  //声明一个boolean,因为addOnGlobalLayoutListener会重复执行,控制它启动后只执行一次
  private boolean isCompletedDraw = false;   
  
    //获取TextVie控件的高度,然后设置给ImageView
        tvRead.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                if (!isCompletedDraw){
                    isCompletedDraw = true;
                    // h就是TextView的高度,h就是TextView的宽度
                    int h = tvRead.getMeasuredHeight();
                    int w = tvRead.getMeasureWidth();
                    //为ImageView设置宽高
                    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) ivIsRead.getLayoutParams();
                    params.width = w;
                    params.height = h;
                    ivIsRead.setLayoutParams(params);
                    ivIsRead.setImageResource(R.drawable.shape_is_read);
                }
            }
        });

每日记录代码,生活会因此而美好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值