Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android get all subviews of a view

I want to get all children of a RelativeLayout. I get this using the code:

aditionView.getAllChildren().

But now the subviews are coming in the order in which it is added into that view. But i want them in the increasing order of position in which it is placed in the view.

like image 375
Priyanka V Avatar asked Oct 13 '11 05:10

Priyanka V


1 Answers

You could sort children by View.getLeft()

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    logCoordinates();
}

private void logCoordinates() {
    RelativeLayout layout = (RelativeLayout)findViewById(R.id.layout);
    for (int i = 0; i < layout.getChildCount(); i++) {
        View child = layout.getChildAt(i);
        Log.i("tag", String.format("%d %d %d %d", child.getLeft(), child.getTop(), child.getRight(), child.getBottom()));
    }
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    logCoordinates();
}

Please, compare log output of logCoordinates() called from onCreate() and from onWindowFocusChanged(). View coordinates are not available within onCreate() (why?). See discussion here How to get height and width of Button

like image 159
vokilam Avatar answered Nov 02 '22 17:11

vokilam