Android 屏幕大小的水平滚动视图内的布局

Android 屏幕大小的水平滚动视图内的布局,android,Android,我是android新手,一直在寻找解决方案,但迄今为止运气不佳。我想创建一个布局,是像下面的图片一样的东西 我想要一个屏幕大小的线性布局。然后还有一个屏幕大小的线性布局,但不在屏幕上。然后我可以在两个虚拟“屏幕”之间滚动 有一篇有趣的文章解释了如何扩展scrollView类,这样我就可以得到一个很酷的抓拍效果,所以如果我能让它工作,我的应用程序会感觉就像在主屏幕之间滚动一样 我读过有关权重的文章,也读过scrollView的fillViewport=“true”。恐怕我不明白如何将这些用于水平

我是android新手,一直在寻找解决方案,但迄今为止运气不佳。我想创建一个布局,是像下面的图片一样的东西

我想要一个屏幕大小的线性布局。然后还有一个屏幕大小的线性布局,但不在屏幕上。然后我可以在两个虚拟“屏幕”之间滚动

有一篇有趣的文章解释了如何扩展scrollView类,这样我就可以得到一个很酷的抓拍效果,所以如果我能让它工作,我的应用程序会感觉就像在主屏幕之间滚动一样

我读过有关权重的文章,也读过scrollView的fillViewport=“true”。恐怕我不明白如何将这些用于水平滚动视图,使线性布局填充屏幕。我尝试过填充父内容和包装内容的各种组合,但都没有成功

在我看来,只要我在构建子视图(每个“屏幕”中的元素)时考虑到屏幕的可变性,该功能就不会影响应用程序在具有不同屏幕的设备之间的可移植性

下面是我尝试使用的XML的一个简单示例:

<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/HorizontalScrollView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fillViewport="true">

<LinearLayout 
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <EditText
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/txtTestBox"
            >
        </EditText>
    </LinearLayout>

    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Button 1"
        />

    </LinearLayout>

</LinearLayout>

</HorizontalScrollView>

不幸的是,这甚至没有接近我想要的。希望这可以做到


感谢您的帮助或建议。

您需要在一个屏幕中包含两个屏幕的具体原因是什么?为什么不把它们分开呢?您可以扩展
GestureDetector
,这样当出现滚动手势时,它会自动“捕捉”到下一个屏幕

水平滚动视图可以无限横向缩放,因此“填充父对象”很可能不会像您在内部布局上预期的那样工作。您是否尝试在内部布局上明确指定宽度

比如:

<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/HorizontalScrollView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fillViewport="true">

<LinearLayout 
    android:orientation="horizontal"
    android:layout_width="400dp"
    android:layout_height="fill_parent">

.....

</LinearLayout>


</HorizontalScrollView>

.....
解决方案是在
滚动视图上使用
android:fillViewport=“true”
无需固定线性布局宽度

     <HorizontalScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:fillViewport="true"
            android:orientation="vertical"
            android:scrollbars="none">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
                //create your views
            </LinearLAyout>
</HorizontalScrollView>

//创建您的视图

好问题,我对这个很感兴趣,因为我认为它将提供更直观的界面。由于我的界面有点复杂,我认为能够“窥视”下一个屏幕上的内容将被证明是有用的。同时,在这一点上,我想知道如何做到这一点,因为我知道这是可以做到的(我已经为这个问题绞尽脑汁一段时间了,所以我不想放弃)。如果我找不到答案,我打算回到你建议的那样。顺便说一下,我提到的“快照”代码的链接可以在这里找到:这并不是问题的真正答案。希望有更好的答案。也许我可以在Firefox移动源代码中找到答案……我想在这里放置一个指向我所指的“快照”代码的链接可能会有所帮助。可以在这里找到:我想要实现的功能的另一个例子可以在Firefox android移动应用程序中找到。页面左侧的选项卡栏(在您滚动之前不在屏幕上)似乎以某种方式创建了一个可滚动的表面,其子视图与屏幕的大小完全相同(它创建了一个与物理手机屏幕大小相同的“屏幕”,当用户滚动时,他们可以查看自己的选项卡和屏幕)。希望这能让我的问题变得清晰。这就是我现在采取的方法。我希望避免手动格式化每个视图,但这似乎是唯一的选择。谢谢android:fillViewport=“true”解决了我的问题