如何最好地动态更改View的高度?

时间:2014-09-10 06:56:22

标签: android height

我知道两个选项,但不知道哪个更好,但最好不要使用古柯。对我来说,后者更可取。我想听听专业人士的意见和评论。选项包括:

1 ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,100);
            view.setLayoutParams(params);

2 view.getLayoutParams().height = 100;

2 个答案:

答案 0 :(得分:0)

后一个更好,因为它不会创建一个新对象并避免一个小垃圾。但是你应该总是检查返回的LayoutParams是否为null,尽管它一旦被添加到视图树中就是非null

另一种方法:

        ViewGroup.LayoutParams lp = view.getLayoutParams();
        if(lp != null) {
            lp.height = 100;
        } else {
            //you should use a subclass of ViewGroup.LayoutParams in your product 
            view.setLayoutParams(new ViewGroup.LayoutParams(100, 100));
        }

答案 1 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

boolean isHeightChanged;
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
   @Override
   public void onGlobalLayout() {
      if(!isHeightChanged){
          isHeightChanged=true;
          view.getLayoutParams().height = 100;
      }
   }
});