2016-11-06 2 views
0

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

Я искал много сообщений SO, но не мог найти проблем, похожих на мои. У меня есть обычай onClickListener, добавляющий фрагмент Пользовательские 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(); 
} 

The View Я добавляю фрагмент в:

<?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 
} 

ответ

0

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

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

+0

Это было на самом деле 'RelativeLayout' До этого и некоторое сообщение предложило изменить его на' FrameLayout', поэтому я тоже это пробовал. Не работает – Pear

0

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

Смежные вопросы