Android: фрагмент добавлен ниже childview

У меня есть FrameLayout с несколькими buttons, и немного ImageViews, Когда я добавляю фрагмент, он отображается поверх ImageViews как и ожидалось, но ниже buttons но я не знаю почему.

Я просмотрел много SO сообщений, но не смог найти проблем, похожих на мою. У меня есть обычай onClickListener который добавляет фрагмент класса Custom clickListener:

public void onClick(View v) {
    // a context is passed to the listener 
    // this gets rootview id
    int id= ((ViewGroup)((Activity)context).getWindow().getDecorView().findViewById(android.R.id.content)).getChildAt(0).getId();
    MyFragment myFragment = new MyFragment();
    FragmentTransaction ft = ((Activity) context).getFragmentManager().beginTransaction();
    ft.add(id, myFragment, "F1");
    ft.commit();
}

Вид, к которому я добавляю фрагмент:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/startscreen"
>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/gamelogo"
        android:id="@+id/logo"
        android:scaleType="fitStart"
        android:adjustViewBounds="true"
    />
</FrameLayout>

Деятельность:

protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.startmenu);
    final FrameLayout r = (FrameLayout) findViewById(R.id.startscreen);
    addViews(r);
}
public void addViews(FrameLayout r){
    // add some buttons to r
    // add custom OnClickListener to one of the buttons
    // add some ImageViews
    // add animation to one button
}

2 ответа

Я подумал, что мне нужно добавить фрагмент к родителю базового FrameLayout. Я не знаю, почему я должен был сделать это все же.

FrameLayout предназначен для блокировки области на экране для отображения одного элемента. Как правило, FrameLayout следует использовать для хранения одного дочернего представления, поскольку может быть сложно организовать дочерние представления таким образом, чтобы их можно было масштабировать до разных размеров экрана, не перекрывая друг друга дочерние представления.

Это из Документов, вы думали изменить макет?

Другие вопросы по тегам