Android Fragment не соответствует match_parent как высота

Извините за огромный свалку кода, но я действительно потерян.

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; 

Примечания : mRootView – это глобальная группа ViewGroup, без проблем, я считаю. PlacesFragment – это ListFragment.

Макеты:

activity_singlepane_empty.xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root_container" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00f"> <include layout="@layout/actionbar"/> <!-- FRAGMENTS COME HERE! See match_parent above --> </LinearLayout> 

list_content.xml:

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/listContainer" android:background="#990" > <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:drawSelectorOnTop="false" /> <TextView android:id="@id/android:empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/no_data_suggest_connection"/> </FrameLayout> 

Проблема: как вы можете видеть, ожидаемое поведение состояло бы в том, чтобы пустой TextView выше отображался по центру на экране. На предварительном просмотре дизайна в Eclipse все в порядке. Только при добавлении в root_view в качестве фрагмента FrameLayout не заполняет весь экран.

Root_container – синий, а FrameLayout – желтоватый, см. Ниже для целей отладки. Не должна ли желтая панель заполнять весь экран?!?!?!?

Введите описание изображения здесь

У меня была такая же проблема, и я подумал, что это происходит, когда вы раздуваете макет в onCreateView в Fragment с нулевым значением, как вы это делали здесь:

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

Вместо этого вы должны сделать это:

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

Где контейнер является Viewgroup. По крайней мере, это решило проблему для меня.

По какой-то причине FrameLayout не получает свой макет из XML.

Мне нужно установить его также в коде (Fragment's onCreateView):

 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; 
 <android.support.v4.widget.NestedScrollView android:id="@+id/container" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:fillViewport="true" > <include layout="@layout/screen_main_fragment" /> </android.support.v4.widget.NestedScrollView> 

Мне пришлось изменить layout_height = "wrap_content" на "match_parent", чтобы заставить его работать.

То, как я это делал, было создать прозрачный образ в XML-коде, сделать фрагмент относительной компоновкой и сделать layout_alignParentBottom="true" в ImageView , таким образом изображение будет придерживаться снизу и сделает фрагмент заполнить родительский

Код здесь:

temp_transparent.xml

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:thickness="0dp" android:shape="rectangle"> <gradient android:startColor="#00000000" android:endColor="#00000000" android:type="linear" android:angle="270"/> 

fragment_my_invites.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:id="@+id/my_invites_fragment" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff"> <ListView android:id="@+id/list_invites" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@color/list_divider" android:dividerHeight="1dp" android:layout_alignParentTop="true" > </ListView> <ImageView android:id="@+id/transparent_image" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true" android:layout_below="@id/list_invites" android:src="@drawable/temp_transparent" /> 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:id="@+id/my_invites_fragment" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff"> <ListView android:id="@+id/list_invites" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@color/list_divider" android:dividerHeight="1dp" android:layout_alignParentTop="true" > </ListView> <ImageView android:id="@+id/transparent_image" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true" android:layout_below="@id/list_invites" android:src="@drawable/temp_transparent" />