Android上更大手机的Grow LinearLayout inside Scrollview

Android上更大手机的Grow LinearLayout inside Scrollview,android,xml,android-layout,layout,Android,Xml,Android Layout,Layout,我有一个完整屏幕的滚动视图,因此在小型手机中,您可以滚动并查看完整的表单 对于大屏幕/hdpi手机,屏幕大小足够适合 问题是,由于它是一个线性布局,所有视图都位于顶部,而底部有空白 我在线性布局中的一个项目上设置了权重,但它不会增加 我的代码: <ScrollView> <LinearLayout android:layout_width="match_parent" android:layout_height=

我有一个完整屏幕的滚动视图,因此在小型手机中,您可以滚动并查看完整的表单

对于大屏幕/hdpi手机,屏幕大小足够适合

问题是,由于它是一个线性布局,所有视图都位于顶部,而底部有空白

我在线性布局中的一个项目上设置了权重,但它不会增加

我的代码:

  <ScrollView>
       <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <RelativeLayout
                 android:id="@+id/header"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="vertical" >
                 HEADER STUFF
            </RelativeLayout>


             <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical" > 
           THIS PART I NEED TO GROW AS MUCH AS POSSIBLE SO THE FOOTER IS AT THE BOTTOM OF THE PAGE.
          </RelativeLayout>


        <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/LightBlue"
        android:orientation="vertical"
        android:paddingBottom="10dp" >
            FOOTER STUFF.  NEED THIS TO BE AT THE FOOTER IF THE PHONE IS BIG ENOUGH. 
            </RelativeLayout>
       <LinearLayout>
</ScrollView>

标题材料
这一部分我需要尽可能地增加页脚,以便页脚位于页面底部。
页脚的东西。如果手机足够大的话,需要在页脚放上这个。

简单回答:在线性布局中,将
android:layout\u height=“wrap\u content”
更改为
android:layout\u height=“match\u parent”

原因:通过包装内容,你并没有给中间的相对体重最大的年轻人一个成长和填补空白的机会。可以说,将其更改为与父代高度相匹配可以给它开花的空间

另外,根据Indiandroid的评论,您可能希望将ScrollView放在LinearLayout内,并放在承载内容的中间相对位置周围,以便固定页眉和页脚


编辑:如果您打算通过在线性布局中使用权重来拉伸中间相对布局,则在应用我前面关于将高度切换为
match\u parent
的部分后,必须移动到围绕中间相对布局的线性布局内部的滚动视图,否则它将无限增长。这是因为ScrollView没有垂直边界,通过将其高度与LinearLayout匹配,LinearLayout也没有边界。

U需要将ScrollView置于中间布局(相对)并固定页眉和页脚布局高度。这样,如果中间布局的内容超过页眉和页脚的高度,它将自动换行,并且不会影响页眉和页脚。这是一个非常好的解决方案,但并不涵盖所有情况(但涵盖了许多情况)。例如,如果页眉或页脚都足够大,几乎可以在屏幕中间(在使用小电话时)相遇,用户将没有足够的空间滚动,如果整个屏幕滚动,则不会出现问题。(大值、小值、value-sw320dp、value-sw320dp-hdpi、value-v11、value-v14等)它将解决您的问题。当父布局为ScrollView时,权重永远不起作用。在Android中,现在的问题是,当键盘打开填充表单时,页脚会向上移动到键盘顶部,并占用一些屏幕空间。是否可以避免此问题?如果您将
布局高度
更改为
匹配父布局
crollview无法拉伸,高度将是固定的,因此不会有任何ScrollView不,它的高度将是无限的,因为ScrollView是LinearLayout的父视图,ScrollView没有边界。请参阅我对我的答案的编辑。
fillViewport
属性就是为此目的而设计的。请参阅Romain Guy的博客文章:。您的答案是n正如上面所解释的,这是不对的。