android 中 使用 第三方库AutoLayout动态设置控件的属性

   这几天公司要做一个电视首页surfaceView预览播放,点击预览窗口全屏播放,由于该项目首页使用hongyang大神的AutoLayout,发现不能动态设置,网上也好少有资料,所以自己就翻了下源码来看看。最后终于解决。

  项目中主要动态设置surfaceView的宽和高,和边距用到了WidthAttr()和MarginLeftAttr()等属性,根据项目需要我们可以找到Attr包下对应的属性类去设置,下面是动态设置宽高的代码。

AutoLayoutHelper.AutoLayoutParams layoutParams = 
(AutoLayoutHelper.AutoLayoutParams)  mSfv_live_home.getLayoutParams();
AutoLayoutInfo autoLayoutInfo = layoutParams.getAutoLayoutInfo(); 
  /**
    * 我们这里要给控件设置高度和宽度所以用到了WidthAttr和HeightAttr这两个类,注意下,这类有三个构造     
    * 参数,第一个就是我们要改的参数,第二个是baseWidth 第三个是baseHeight  ,默认给0就行,设置宽度
    * 以高度为基准 WidthAttr(300,0,Attrs.Widht);
    * 设置高度以宽度为基准 HeightAttr(300,Attrs.Height,0),用到属性类就对应属性值。
    */       
autoLayoutInfo.addAttr(new WidthAttr(300, 0, 0));
autoLayoutInfo.addAttr(new HeightAttr(300, 0, 0));
/**
  *  这是关键代码,重新为控件设置布局,不然不会刷新控件布局的。
  */

ViewGroup.LayoutParams layoutParamsTwo = mSfv_live_home.getLayoutParams();
mSfv_live_home.setLayoutParams(layoutParamsTwo);



                }

你可能感兴趣的:(android)