布局权重在ScrollView中不起作用

时间:2012-04-25 08:48:15

标签: android android-layout

我想将布局权重分配给LinearLayoutScrollView内的多个项目。但是,ScrollView会忽略LinearLayout weightSum

我的目标是将布局的权重除以2,1,1(总和为4),但这在ScrollView内部无效。

如何解决此布局问题?

main.xml中

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" 
        android:weightSum="4">

        <LinearLayout android:id="@+id/logo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" 
            android:layout_weight="2"
            android:background="#FFFFFF" />

        <LinearLayout android:id="@+id/logo1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" 
            android:layout_weight="1"
            android:background="#000000" />


        <LinearLayout android:id="@+id/logobutton"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" 
            android:layout_weight="1" 
            android:background="#4B4B4B" />

    </LinearLayout>
</ScrollView>

4 个答案:

答案 0 :(得分:159)

我以前遇到过这个问题。只需在ScrollView中使用android:fillViewport="true",它就会填满屏幕。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true" >

答案 1 :(得分:2)

这不会像你做的那样有效。 ScrollView的子视图应设置为wrap_content。如果您将其设置为fill_parent,它将填充ScrollView的区域并且永不滚动,因为它不会大于ScrollView

layout_weight的想法是按比例填补特定区域。

您应该将所有子LinearLayouts layout_height设置为wrap_content或特定尺寸(以dp为单位),将父LinearLayout layout_height设置为{ {1}}

如上所述,您需要删除其他

  

的xmlns:机器人= “http://schemas.android.com/apk/res/android”

如果它不是布局的根(第一)元素。

答案 2 :(得分:0)

根据我的经验,fillviewport=true的工作有点奇怪。

我通过将LinearLayout包装为另一个FrameLayout布局来解决了这个问题。

我希望这会有所帮助。

答案 3 :(得分:0)

只需将其放在滚动视图中即可

android:fillViewport="true"