[英]How to change width and height of a view programmatically?
我在適配器中有一個 ImageView。 我想以編程方式設置它的layout_width
和layout_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 並縮放圖像(如果您的圖像是位圖,否則還有更多方法可以縮放圖像)並控制 imageView 的大小自行縮放圖像
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.