ScrollView里面的FrameLayout布局边距问题

时间:2012-02-20 10:15:48

标签: android android-layout

我有一个非常奇怪的问题,FrameLayout持有ScrollView。我的布局如下所示:

<FrameLayout
   android:layout_width="match_parent"
   android:layout_height="match_parent">
   <ScrollView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"
      android:layout_marginTop="50dp">
      <LinearLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:orientation="vertical">
     </LinearLayout>
   </ScrollView>

   <...
   />
</FrameLayout>

我遇到的问题是layout_marginTop标记上的ScrollView属性。它不适用于不同设备的相同方式。例如,在Nexus S(运行ICS)上,通过在屏幕上添加一些空间来正确解释它,但在另一个(运行Gingerbread的Galaxy S2)上,它在屏幕底部而不是屏幕顶部创建空间。

有什么想法吗?

谢谢!

[编辑]

  • 似乎问题对于运行Android版本低于3.0的所有设备而言都很常见。

  • 感谢您注意到这些无意义的额外属性,看起来它们就在这里,因为之前FrameLayoutLinearLayout被包裹。

3 个答案:

答案 0 :(得分:2)

android:layout_gravity="center_vertical"不使用android:layout_width="match_parent"。这没有道理。

尝试在ScrollView中使用FrameLayout中的android:paddingTop="50dp"而不是android:layout_marginTop="50dp"

<FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingTop="50dp">
    <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            >
        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                >
        </LinearLayout>
    </ScrollView>

答案 1 :(得分:1)

尝试android:fillViewPort=true

答案 2 :(得分:1)

使用android:paddingTop上的ScrollView代替android:layout_marginTop修正了此问题。

<FrameLayout
   android:layout_width="match_parent"
   android:layout_height="match_parent">
   <ScrollView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"
      android:layout_paddingTop="50dp">
      <LinearLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:orientation="vertical">
     </LinearLayout>
   </ScrollView>

   <...
   />
</FrameLayout>