我有一个非常奇怪的问题,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的所有设备而言都很常见。
感谢您注意到这些无意义的额外属性,看起来它们就在这里,因为之前FrameLayout
曾LinearLayout
被包裹。
答案 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>