gpt4 book ai didi

java - 无法使用数据绑定(bind)在运行时获取 View 的宽度

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:27 25 4
gpt4 key购买 nike

我的xml中有一个使用数据绑定(bind)库的ImageView,它的高度是“match_parent”,现在我需要在运行时更改它的高度,但是当我获取它的宽度时,它总是给我0,如何获取它的实际宽度尺寸?

我的 xml 中有以下 ImageView:

<ImageView
android:layout_width="match_parent"
android:layout_height="200dp"
android:scaleType="centerCrop"
app:imageUrl="@{data.bannerImage}"
tools:src="@drawable/iop"
android:src="@drawable/iop"/>

我使用下面的java代码将其高度设置为宽度的比率

@Override
public void onResume() {
super.onResume();

mBinding.notifyChange();
mBinding.bannerImage.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ViewGroup.LayoutParams params = mBinding.bannerImage.getLayoutParams();
Log.e("tag","mBinding.bannerImage.getWidth()=="+mBinding.tvReviews.getWidth());
params.height= (int)(mBinding.tvReviews.getWidth()/1.75);
mBinding.bannerImage.setLayoutParams(params);
Log.e("tag,"params.height=="+params.height);
mBinding.bannerImage.getViewTreeObserver().removeOnGlobalLayoutListener(this);
mBinding.notifyPropertyChanged(com.webkul.mobikulmp.BR.bannerImage);
}
});
}

这里mBinding = DataBindingUtil.setContentView(this,R.layout.activity_seller_profile);,//在这里替换你的xml,但我总是得到0返回mBinding.bannerImage.getWidth()。我还尝试为 ImageView 提供固定宽度,并在某些按钮单击监听器上获取其宽度,但都是徒劳。

感谢任何帮助

最佳答案

您可以使用下面的代码在运行时获取View的宽度和高度

 int Height, Width;
final ImageView imgview = (ImageView)findViewById(R.id.scaled_image);
ViewTreeObserver vto = imgview .getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
imgview .getViewTreeObserver().removeOnPreDrawListener(this);
Height = imgview .getMeasuredHeight();
Width = imgview .getMeasuredWidth();
tv.setText("Height: " + Height + " Width: " + Width);
return true;
}
});

关于java - 无法使用数据绑定(bind)在运行时获取 View 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50582925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com