我需要在LinearLayout
内加SrollView
,而LinearLayout
必须有ScrollView
的保证金。首先,我能想到解决该问题的唯一方法是在另一个LinearLayout
内部LinearLayout
,并在最后一个布局上设置边距。如果它们设置在外部LinearLayout.
示例:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:fillViewport="true"
android:background="@color/layout_color_green">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/layout_color_yellow">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:background="@color/layout_color_blue">
</LinearLayout>
</LinearLayout>
</ScrollView>
我的问题是:为什么我需要这样做?
如果我只有一个LinearLayout
,则没有边距......
示例:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:fillViewport="true"
android:background="@color/layout_color_green">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:background="@color/layout_color_blue">
</LinearLayout>
</ScrollView>
然后,搜索一些类似的问题,我找到了一些布局,让我想到在ScrollView
中使用填充而不是LinearLayout
中的边距。这也解决了我的问题,我不需要另一个LinearLayout
。这是一个更优雅的解决方案。
仍然,我想了解为什么LinearLayout
内的简单边距在ScrollView
内部不起作用。因为如果它不在ScrollView
内,它确实可以正常工作。
任何人都知道为什么?
答案 0 :(得分:16)
我在源代码中挖掘了一点:
ScrollView
延伸FrameLayout
。这个问题本身有一些保证金问题,而ScrollView
甚至没有尝试解决这个问题。在测量时,边际基本上被忽略了。
但最终它并不重要,因为你应该能够在ScrollView
本身定义一个填充(这是一个肯定,没有尝试)。单个子视图不应该有保证金。
答案 1 :(得分:11)
Hello Knickedi和Ricardo Amaral,
虽然这个答案标记为已解决,但我想对此问题进行一些说明。
正如Knickedi所说,ScrollView扩展了FrameLayout。
所以我的答案是你可以在scrollView中设置LinearLayout的layout_gravity
,然后layout_margin
将在LinearLayout中工作,就像FrameLayout中的linearLayout一样。
我有同样的问题,我已经应用了这个,它对我有用。 :)
示例:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_marginTop="30dp"
android:orientation="vertical" >
</ScrollView>