Android Fragment ne respecte pas match_parent en hauteur

Désolé pour l’énorme vidage de code, mais je suis vraiment perdu.

MyActivity.java onCreate:

super.onCreate(savedInstanceState); setContentView(R.layout.activity_singlepane_empty); mFragment = new PlacesFragment(); getSupportFragmentManager().beginTransaction() .add(R.id.root_container, mFragment) .commit(); 

PlacesFragment.java onCreateView:

 mRootView = (ViewGroup) inflater.inflate(R.layout.list_content, null); return mRootView; 

Notes : mRootView est un ViewGroup global, pas de problème, je crois. PlacesFragment est un ListFragment.

Layouts:

activity_singlepane_empty.xml:

     

list_content.xml:

     

Problème: comme vous pouvez le voir, le comportement attendu serait d’avoir le TextView vide ci-dessus pour apparaître centré sur l’écran. Dans l’aperçu de la conception dans Eclipse, c’est OK. Seulement lorsqu’il est ajouté à root_view en tant que fragment, FrameLayout ne remplit pas tout l’écran.

root_container est bleu et FrameLayout est jaunâtre, voir ci-dessous à des fins de débogage. Le volet jaune ne devrait-il pas remplir tout l’écran?!?!?!?

entrer la description de l'image ici

    J’ai eu le même problème et je pense que cela se produit lorsque vous gonflez la mise en page dans le onCreateView du fragment avec null, comme vous l’avez fait ici:

     mRootView = (ViewGroup) inflater.inflate(R.layout.list_content, null); 

    Au lieu de cela, vous devez faire ceci:

     mRootView = (ViewGroup) inflater.inflate(R.layout.list_content,container, false); 

    Où container est le Viewgroup. Au moins, cela a résolu le problème pour moi.

        

    J’ai dû changer layout_height = “wrap_content” en “match_parent” pour le faire fonctionner.

    Pour une raison quelconque, FrameLayout ne tire pas sa mise en page du fichier XML.

    Je dois aussi le définir dans le code (onCreateView de Fragment):

     mRootView = (ViewGroup) inflater.inflate(R.layout.list_content, null); FrameLayout fl = (FrameLayout) mRootView.findViewById(R.id.listContainer); fl.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); return mRootView; 

    La façon dont je l’ai fait était de créer une image transparente dans le code xml, de rendre le fragment une disposition relative et de rendre layout_alignParentBottom="true" dans ImageView , de cette façon l’image colle au fond et remplit le fragment parent.

    Code ici:

    temp_transparent.xml

       

    fragment_my_invites.xml