Android全屏布局,下面有其他可滚动的布局

Android全屏布局,下面有其他可滚动的布局,android,xml,layout,scrollview,Android,Xml,Layout,Scrollview,我有一个显示一些图像和文本的布局,底部有按钮 当按下按钮时,我需要在按钮下方显示一些新信息 因此,初始内容需要保持在相同的高度(设备屏幕的高度),并且需要在其下方添加新内容,以允许用户向下滚动 当按下一个按钮时,理想情况下需要像页面锚一样显示新内容,但我遇到的困难是让初始内容全屏显示,并在添加新内容时保持该大小,同时使整个内容可以滚动 我一直在玩不同的布局、不同的高度参数、android:fillViewport=“true”与否等等 如有必要,我可以提供一些XML/进一步的解释。但我不确定我的

我有一个显示一些图像和文本的布局,底部有按钮

当按下按钮时,我需要在按钮下方显示一些新信息

因此,初始内容需要保持在相同的高度(设备屏幕的高度),并且需要在其下方添加新内容,以允许用户向下滚动

当按下一个按钮时,理想情况下需要像页面锚一样显示新内容,但我遇到的困难是让初始内容全屏显示,并在添加新内容时保持该大小,同时使整个内容可以滚动

我一直在玩不同的布局、不同的高度参数、android:fillViewport=“true”与否等等

如有必要,我可以提供一些XML/进一步的解释。但我不确定我的目标是否可能实现。至少我想得到一个可滚动的整体视图,上面的布局是全屏的,下面的一些布局用户可以滚动到

图片:

试试这个:

  • 制作ScrollView容器并将布局#1添加到其中

  • 根据屏幕高度将布局高度#1设置到代码中

  • 按钮后,单击将布局#2添加到滚动视图中

  • 更新: 好的,我只能建议您使用这个解决方案(它在emulator中对我有效)。 XML:


    我将创建一个自定义的
    滚动视图
    ,它将第一个子对象的高度设置为自己的高度。这将模拟全屏视图,同时仍然能够在其下方添加内容

    要正确处理屏幕大小的更改,最好是覆盖
    onSizeChanged()


    但布局的高度#1必须具有一定的动态性。从某种意义上说,它需要在任何设备上都能全屏显示。如果它是fill_parent,那么我需要在scrollview上有一个fillViewPort(它似乎不会随着新布局的添加而扩展)。非常感谢您的解决方案。我想我缺少的关键部分是改变视口,可能是一些相对/线性布局混淆了。
    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/scroll" 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">
    
        <LinearLayout
            android:id="@+id/container" 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
    
            <RelativeLayout 
                android:id="@+id/layout1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#ff0000">
    
                <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button"
                    android:onClick="btnClick"/>
    
            </RelativeLayout>
    
        </LinearLayout>
    
    </ScrollView>
    
    public class CustomScrollView extends ScrollView {
    
        // ...
    
        @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh) {
            super.onSizeChanged(w, h, oldw, oldh);
    
            View view = getChildAt(0);
            if (view != null)
                view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, h)));
        }
    }