我知道两个选项,但不知道哪个更好,但最好不要使用古柯。对我来说,后者更可取。我想听听专业人士的意见和评论。选项包括:
1 ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,100);
view.setLayoutParams(params);
2 view.getLayoutParams().height = 100;
答案 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;
}
}
});