LinearLayout中的片段会更改其高度

时间:2014-12-17 12:45:31

标签: android android-layout android-fragments

我正在尝试在Android应用程序中用XML设置非常简单的东西。

我想把片段放在每个活动的顶部,并试图将屏幕分成2/8重量(总和10)。但不幸的是,这种情况正在从活动变为活动。不知道为什么。有帮助吗? :)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="top" >

<fragment
        android:id="@+id/fragment_top"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:layout_gravity="top"
        class="com.app.TopFragment" />

<ScrollView 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="8"
    android:id="@+id/chart_scrollview" >   

Here goes LinearLayout with other linearlayouts inside.

</ScrollView>
</LinearLayout>

有什么想法吗?

编辑: Fragment类声明是:

class TopFragment extends Fragment implements View.OnClickListener{}

EDIT2: 感谢你们。有趣的是,我已经尝试过这个0dip的东西而且它没有用。现在它正在工作,但对于任何其他人在这里打击类似问题的提示:不要使用

android:layout_width="fill_parent"

我的示例代码中的这些内容中的任何内容。始终使用

android:layout_width="match_parent"

这就是为什么0dip解决方案无法正常工作的原因。非常感谢你。

3 个答案:

答案 0 :(得分:2)

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:gravity="top" >

    <fragment
            android:id="@+id/fragment_top"
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:layout_weight="2"
            android:layout_gravity="top"
            class="com.app.TopFragment" />

    <ScrollView 
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="8"
        android:id="@+id/chart_scrollview" >   

   <!-- Here goes LinearLayout with other linearlayouts inside-->

    </ScrollView>
    </LinearLayout>

答案 1 :(得分:1)

如果要按权重控制视图的高度,请尝试将片段和ScrollView的高度从wrap_content更改为match_parent0dip

答案 2 :(得分:0)

然后你应该在你的xml中写下这样的东西

<com.app.TopFragment
    android:id="@+id/fragment_top"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:layout_gravity="top"
    class="com.app.TopFragment" />