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

本文介绍了在Android开发中如何动态获取TextView的宽高,并将其值设置给ImageView。通过添加OnGlobalLayoutListener监听器,获取TextView的measuredHeight和measuredWidth,然后更新ImageView的LayoutParams以实现尺寸同步。

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

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

android:id="@+id/iv_is_read"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

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、付费专栏及课程。

余额充值