Android 动态获取控件的宽高,并动态设置控件宽高

在Android项目开发中,为了更加好的去进行适配,某些时候就需要用到动态获取A控件的宽高,将A控件宽高的值动态设置给B控件,例如我在xml文件中将TextView和ImageView的宽高都设置为wrap_content,接下来将动态获取TextView的宽高,然后将宽高值设置给IaageView



        

在java代码中

  //声明一个boolean,因为addOnGlobalLayoutListener会重复执行,控制它启动后只执行一次
  private boolean isCompletedDraw = false;   
  
    //获取TextVie控件的高度,然后设置给ImageView
        tvRead.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                if (!isCompletedDraw){
                    isCompletedDraw = true;
                    // h就是TextView的高度,h就是TextView的宽度
                    int h = tvRead.getMeasuredHeight();
                    int w = tvRead.getMeasureWidth();
                    //为ImageView设置宽高
                    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) ivIsRead.getLayoutParams();
                    params.width = w;
                    params.height = h;
                    ivIsRead.setLayoutParams(params);
                    ivIsRead.setImageResource(R.drawable.shape_is_read);
                }
            }
        });

每日记录代码,生活会因此而美好!

你可能感兴趣的:(Android)