getWidth ImageView并设置height = 1.6 * width

时间:2016-09-28 11:41:41

标签: android

我有一段Android代码:

final int[] finalWidth = new int[1];
final ImageView iv = (ImageView)findViewById(R.id.imageView);
textView = (TextView)findViewById(R.id.textView);
ViewTreeObserver vto = iv.getViewTreeObserver();

vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            public boolean onPreDraw() {
                iv.getViewTreeObserver().removeOnPreDrawListener(this);
                finalWidth[0] = iv.getMeasuredWidth();    
                textView.setText(Integer.toString(finalWidth[0]));
                return true;
            }
        });
    imageView = (ImageView)findViewById(R.id.imageView);
    imageView.getLayoutParam().height = 1.6*finalWidth[0];

但是,在构建应用程序后,ImageView是不可见的。帮我 !谢谢!

1 个答案:

答案 0 :(得分:0)

假设gifImageView是你的imageView。

gifImageView.post(new Runnable() {
        @Override
        public void run() {
            int __w = gifImageView.getWidth();
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(__w, (int)(1.6 * __w)); // Since you can not apply float height
            gifImageView.setLayoutParams(params);
            gifImageView.invalidate();
        }
    });

希望这有帮助。