如何以编程方式更改视图的宽度和高度



我在适配器中有一个ImageView。我想用程序设置它的layout_widthlayout_height。我试了几件事,但似乎都不起作用。我后来还为ImageView设置了两个约束。

我尝试过的(我在适配器的ViewHolder的构造函数中完成了所有这些(:

imageView.setLayoutParams(new ConstraintLayout.LayoutParams((int) (imageView.getWidth() * MainActivity.SCREEN_SIZE_RATIO),
(int) (imageView.getHeight() * MainActivity.SCREEN_SIZE_RATIO)));
ViewGroup.LayoutParams layoutParams = imageView.getLayoutParams();
layoutParams.width = (int) (imageView.getWidth() * MainActivity.SCREEN_SIZE_RATIO);
layoutParams.height = (int) (imageView.getHeight() * MainActivity.SCREEN_SIZE_RATIO);
imageView.setLayoutParams(layoutParams);
imageView.getLayoutParams().width = (int) (imageView.getWidth() * MainActivity.SCREEN_SIZE_RATIO);
imageView.getLayoutParams().height = (int) (imageView.getHeight() * MainActivity.SCREEN_SIZE_RATIO);
imageView.requestLayout();

我也尝试过附加OnGlobalLayoutListener:

imageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
imageView.setLayoutParams(new ConstraintLayout.LayoutParams((int) (imageView.getWidth() * MainActivity.SCREEN_SIZE_RATIO),
          (int) (imageView.getHeight() * MainActivity.SCREEN_SIZE_RATIO)));
imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(activity.getApplicationContext(), R.layout.donor_planter);
constraintSet.connect(imageView.getId(), ConstraintSet.TOP, R.id.top_guideline_image_view, ConstraintSet.TOP);
constraintSet.connect(imageView.getId(), ConstraintSet.LEFT, R.id.left_guideline_image_view, ConstraintSet.LEFT);
constraintSet.applyTo(constraintLayout);
}
});

我如何设置限制:

ConstraintLayout constraintLayout = view.findViewById(R.id.constraint_layout);
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(activity.getApplicationContext(), R.layout.donor_planter);
constraintSet.connect(imageView.getId(), ConstraintSet.TOP, R.id.top_guideline_image_view, ConstraintSet.TOP);
constraintSet.connect(imageView.getId(), ConstraintSet.LEFT, R.id.left_guideline_image_view, ConstraintSet.LEFT);
constraintSet.applyTo(constraintLayout);

我在StackOverflow上读了很多关于这方面的内容,但我似乎无法更改ImageView的宽度和高度。顺便说一句,我正在使用这个库作为我的ImageView(CircularImageView(。

这不是最好的方法,但您可以使用BitMapFactory.option(如果您的图像是位图,则有更多的方法可以缩放图像(使您的图像视图wrapContent并缩放图像

最新更新