Проблема в том, что вы используете `FrameLayout`, который по умолчанию накладывает дочерние элементы друг на друга, что приводит к тому, что последний добавленный элемент будет располагаться поверх предыдущих. Это может объяснять, почему кнопки располагаются поверх `CheckBox`, даже если вы добавляете их в коде после чекбоксов.
Чтобы решить эту проблему, есть несколько способов:
1. **Использование `LinearLayout`**: Это самое простое решение. `LinearLayout` размещает дочерние элементы по вертикали или горизонтали, что поможет избежать наложения элементов.
2. **Размещение элементов в `ConstraintLayout`**: Если вы хотите сохранить возможность использовать сложные макеты и позиционирование, вы можете рассмотреть возможность использования `ConstraintLayout`, который намного более гибок, чем `FrameLayout`, и позволит вам точно контролировать расположение каждого элемента.
3. **Использование `RelativeLayout`**: Если вы не хотите переключаться на `LinearLayout`, вы можете использовать `RelativeLayout`, который позволяет вам устанавливать относительные позиции дочерних элементов.
Если вам действительно нужно использовать `FrameLayout` и вы хотите настроить порядок отображения элементов, вы можете попробовать изменить порядок добавления элементов или задать правила видимости, но это может быть сложнее и не всегда будет удобным решением.
Пример изменения `FrameLayout` на `LinearLayout`:
```java
LinearLayout myLinearLayout = new LinearLayout(getContext());
myLinearLayout.setOrientation(LinearLayout.HORIZONTAL);
myLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
// Создаем чекбокс
CheckBox checkBox = new CheckBox(getContext());
checkBox.setLayoutParams(new LinearLayout.LayoutParams(
140,
LinearLayout.LayoutParams.WRAP_CONTENT));
myLinearLayout.addView(checkBox);
// Создаем кнопку
Button button = new Button(getContext());
button.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
button.setText("Кнопка");
myLinearLayout.addView(button);
// Добавляем в основной контейнер
listBottom.addView(myLinearLayout);
```
Если вы решите остаться с `FrameLayout` и хотите, чтобы чекбоксы находились ниже кнопки, вам нужно отрегулировать использование `LayoutParams`, добавив необходимое смещение. Однако, как уже упоминалось, `LinearLayout` будет более подходящим выбором для таких случаев.