我是Android开发的新手,我有以下问题。
我需要在FrameLayout
内使用ScrollView
来使其可滚动。我写了这个
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="#00ff00">
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="500dp"
android:background="#ff0000">
</FrameLayout>
</ScrollView>
但这不起作用。我试过RelativeLayout
并且它有效,但我需要用于FrameLayout
。
有什么想法吗?
答案 0 :(得分:20)
android:fillViewport =&#34; true&#34; 解决了这个问题。
android:fillViewport,定义scrollview是否应拉伸其内容以填充视口。
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</FrameLayout>
</ScrollView>
答案 1 :(得分:5)
我尝试了很多变种来解决这个问题,包括这里的答案,但没有人有帮助。 ScrollView
始终包裹FrameLayout
,但RelativeLayout
,LinearLayout
...
我找到了一个解决方案 - 设置FrameLayout
的最小高度。您可以通过setMinimumHeight()
方法动态设置最小高度。
答案 2 :(得分:2)
你的xml样本非常好,我唯一能看到的是:如果ScrollLayout父级大于500dp,它就不会滚动。
实际上,仅当内容大于滚动视图时才使用滚动。
在这里,您将内容高度设置为500dip,并将scrollview设置为“match_parent” 如果此scrollView的父节点占据整个屏幕,则在800dip高度屏幕上(例如)
=&GT;滚动根本不需要。
答案 3 :(得分:2)
尝试在FrameLayout中将layout_height设置为“wrap_content”
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ff0000">
当FrameLayout高于屏幕边框时,它将滚动。或者,如果您想要可滚动区域的固定高度,请在ScrollView上将高度设置为500dp。这取决于你想要什么,但不要在ScrollView子项上设置固定高度。 ScrollView子项的高度应始终为wrap_content。
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="500dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="#00ff00">
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ff0000">
</FrameLayout>
</ScrollView>
答案 4 :(得分:1)
要在ScrollView中获取FrameLayout,请执行以下操作:
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/linearLayoutHeader1"
android:layout_centerHorizontal="true" >
<LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/FrameLayout1"
android:layout_width="match_parent"
android:layout_height="1440dp"
>
</FrameLayout>
</LinearLayout>
</ScrollView>