horizo​​ntalScrollView里面的布局,就是屏幕的大小

时间:2010-12-20 04:05:12

标签: android

我是android的新手并且一直在寻找解决方案,但到目前为止还没有运气。我想创建一个类似下图的布局。

我想要一个与屏幕大小相对应的linearLayout。然后还有另一个linearLayout,它也是屏幕大小但屏幕外。然后我可以在两个虚拟“屏幕”之间滚动。

enter image description here

有一篇有趣的文章解释了如何扩展scrollView类,以便我可以获得很酷的捕捉效果,所以如果我能让它工作,我的应用程序就会像在主屏幕之间滚动一样。

我已经阅读了有关权重以及scrollView的fillViewport =“true”的内容。我担心我不明白这些如何与horizo​​ntalScrollView一起使用以使linearLayouts填满屏幕。我尝试过fill_parent和wrap_content的各种组合,但无济于事。

正如我所看到的,只要构建子视图(每个“屏幕”中的元素)并考虑到屏幕的可变性,此功能不会损害具有不同屏幕的设备之间的应用程序的可移植性。

以下是我尝试的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>

不幸的是,这甚至没有接近我正在寻找的东西。希望这可以做到......

感谢您提供任何帮助或建议。

3 个答案:

答案 0 :(得分:2)

水平滚动视图可以无限左右扩展,因此“填充父级”很可能不会像您期望的那样在内部布局上工作。您是否尝试在内部布局上明确指定宽度?

类似的东西:

<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>

答案 1 :(得分:1)

See here解决方案是在android:fillViewport="true"上使用ScrollView.,无需修复LinearLayout宽度。

     <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>

答案 2 :(得分:0)

是否有一个特定的原因需要在一个屏幕内部实际拥有2个屏幕?为什么不把它们分开?您可以扩展GestureDetector,这样当滚动手势发生时,它会自动“捕捉”到下一个屏幕