我是android的新手并且一直在寻找解决方案,但到目前为止还没有运气。我想创建一个类似下图的布局。
我想要一个与屏幕大小相对应的linearLayout。然后还有另一个linearLayout,它也是屏幕大小但屏幕外。然后我可以在两个虚拟“屏幕”之间滚动。
有一篇有趣的文章解释了如何扩展scrollView类,以便我可以获得很酷的捕捉效果,所以如果我能让它工作,我的应用程序就会像在主屏幕之间滚动一样。
我已经阅读了有关权重以及scrollView的fillViewport =“true”的内容。我担心我不明白这些如何与horizontalScrollView一起使用以使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>
不幸的是,这甚至没有接近我正在寻找的东西。希望这可以做到......
感谢您提供任何帮助或建议。
答案 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
,这样当滚动手势发生时,它会自动“捕捉”到下一个屏幕