尝试了解ScrollView中LinearLayout的边界

我需要在SrollView有一个LinearLayout ,并且LinearLayout必须在ScrollView有一个边距。 首先,我能想到解决这个问题的唯一方法是在另一个LinearLayout使用一个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> 

在这里输入图像说明

然后,search一些类似的问题,我发现一些布局给了我在ScrollView中使用填充而不是LinearLayout的边距的想法。 这也解决了我的问题,我不需要在另一个LinearLayout 。 这是一个更优雅的解决scheme。

不过,我想了解为什么LinearLayout内部的简单边距在ScrollView不起作用。 因为如果不在ScrollView它确实工作正常。

有人知道为什么

Solutions Collecting From Web of "尝试了解ScrollView中LinearLayout的边界"

我挖了一点点的源代码:

ScrollView扩展了FrameLayout 。 这其中有一些保证金问题本身和ScrollView甚至没有试图解决这个问题。 在测量的时候,边际基本上被忽略了。

但最后它并不重要,因为你应该能够在ScrollView本身上定义一个填充(这是一个肯定,没有尝试)。 单一子女观点不应该有保证金。

你好Knickedi和里卡多·阿马拉尔,

虽然这个答案被标记为已解决,但我想在这个问题上提出一些亮点。

正如Knickedi所说,ScrollView扩展了FrameLayout。

所以我的答案是你可以在layout_gravity中设置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>