Android получить все подпредставления представления - PullRequest
5 голосов
/ 13 октября 2011

Я хочу, чтобы все дети получили RelativeLayout.Я получаю это, используя код:

aditionView.getAllChildren().

Но теперь подпредставления идут в том порядке, в котором они добавляются в это представление.Но я хочу, чтобы они были в порядке возрастания позиции, в которой они находятся в представлении.

1 Ответ

10 голосов
/ 13 октября 2011

Вы можете отсортировать детей по 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();
}

Пожалуйста, сравните вывод журнала logCoordinates(), вызванный с onCreate() и с onWindowFocusChanged(). Координаты вида недоступны в пределах onCreate() (почему?). Смотрите обсуждение здесь Как узнать высоту и ширину кнопки

...