我在活动中添加了2个片段。启动后,我只看到标题栏但没有主UI。这是活动和布局的代码。如果我注释掉标题片段 - 主要UI显示出来。我确定它很简单,但无法弄清楚要改变什么以使它们都出现
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/login_activity_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
<!--<fragment android:name="com.idatt.activities.TitleBarFragment"-->
<!--android:id="@+id/fr_title_bar"-->
<!--android:layout_height="match_parent"-->
<!--android:layout_width="match_parent"/>-->
<fragment android:name="com.idatt.activities.LoginFragment"
android:id="@+id/fr_login"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
</LinearLayout>
<!-- The navigation drawer -->
<ListView
android:id="@+id/login_activity_drawer_list"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>
答案 0 :(得分:3)
更改为wrap_content
两个片段的layout_height
。试试这个:
<LinearLayout android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<fragment android:name="com.idatt.activities.TitleBarFragment"
android:id="@+id/fr_title_bar"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
<fragment android:name="com.idatt.activities.LoginFragment"
android:id="@+id/fr_login"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
</LinearLayout>
答案 1 :(得分:1)
当父视图(是LinearLayout)具有wrapcontent属性且子(每个片段)具有匹配的父属性时,您有2个视图向相反方向拉 - 一方面,您使LinearLayout尝试缩小自身到其内容的大小,另一方面,它的内容正在尝试(两者)伸展到他们父亲的大小。 另一个问题是:因为两个片段的高度都与它们的父母相匹配(这是一个垂直的线性布局),所以你得到的两个片段完全覆盖了线性布局,因此一个片段不会为另一个片段留下任何空间。
因此,您需要做的是获取每个片段的height属性并将其设置为“wrapcontent”,这将有效地解决这两个问题。 通过不匹配它们的父级大小,第一个片段将留下第二个片段可见的空间,并且因为线性布局包装其内容,所以两个片段的大小恰好完全适合。