I am working on a fragment and I want to get the dimension of a
layout
contained in the
xml
fragment layout
.
When I try the code
RelativeLayout myLayout = view.findViewById(R.id.myLayout); myLayout.getHeight();
it returns 0.
I need these dimensions to put inside myLayout other objects.
I try to use:
myLayout.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener(){ @Override public void onGlobalLayout() { mHeight = myLayout.getHeight(); mWidth= myLayout.getWidth(); System.out.println("width: "+mWidth+" height: "+mHeight); } });
but this code is invoke a lot of time and I don’t know exactly when it is execute.
I need these dimensions into
public void onActivityCreated ()
method. Is it possible?
Answer
In onActivityCreated, the view hasn’t been measured yet. So no, you can’t get the measurements from there. onGlobalLayout is a good place to do it. Layouts happen directly after measurement. You can remove your listener afterwards, if you only want to do it once. Note that layouts can change size though (soft keyboards appearing, for example)