簡體   English   中英

如何以編程方式更改視圖的寬度和高度?

[英]How to change width and height of a view programmatically?

我在適配器中有一個 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 並縮放圖像(如果您的圖像是位圖,否則還有更多方法可以縮放圖像)並控制 imageView 的大小自行縮放圖像

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM