gpt4 book ai didi

Android获取 fragment 中的布局高度和宽度

转载 作者:IT老高 更新时间:2023-10-28 23:30:26 59 4
gpt4 key购买 nike

我正在处理一个 fragment ,我想获取 xml fragment layout 中包含的 layout 的维度。当我尝试代码时

RelativeLayout myLayout = view.findViewById(R.id.myLayout);
myLayout.getHeight();

它返回 0。我需要将这些尺寸放入 myLayout 中的其他对象。

我尝试使用:

myLayout.getViewTreeObserver().addOnGlobalLayoutListener( 
new ViewTreeObserver.OnGlobalLayoutListener(){

@Override
public void onGlobalLayout() {
mHeight = myLayout.getHeight();
mWidth= myLayout.getWidth();
System.out.println("width: "+mWidth+" height: "+mHeight);
}
});

但是这段代码被调用了很多时间,我不知道它是什么时候执行的。我需要将这些维度放入 public void onActivityCreated() 方法中。可能吗?

最佳答案

有一个更简洁的解决方案,只需在 fragment 的 Root View 上使用 View.post() 方法,您可以调用 getMeasuredHeight()/getMeasuredWidth()并获取实际值。

例如

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.myfragment, container, false);

root.post(new Runnable() {
@Override
public void run() {
// for instance
int height = root.getMeasuredHeight();
}
});

return root;
}

ViewTreeObserver 非常整洁,没有乱七八糟的东西。

我只用 android-23 设备对此进行了测试,但 API 从级别 1 开始就有这种方法。

无论如何,WFM。

关于Android获取 fragment 中的布局高度和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16937953/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com