我有一个可滚动的LinearLayout父级,其中嵌入了一些FrameLayouts,如下所示:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="vertical"
android:orientation="vertical">
<FrameLayout
android:id="@+id/hb_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<FrameLayout
android:id="@+id/gn_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<FrameLayout
android:id="@+id/yt_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
我希望FrameLayouts占用他们需要的空间,允许通过LinearLayout滚动整个视图。
问题是:LinearLayout只占用屏幕,它不会滚动,而如果内容溢出屏幕底部,FrameLayout将滚动。
要清楚,我只想让FrameLayouts填充他们需要的任何空间,而LinearLayout可以像一个长视图一样滚动它。我必须修复FrameLayout高度来实现这一目标吗?如果是这样,我的布局是否存在不同屏幕尺寸/密度的风险(或DP在所有情况下都能正常工作?)。
非常感谢你!
编辑:我已经确认在FrameLayout中设置固定高度正是我想要做的事情:滚动为一个。但是,为什么没有wrap_content测量高度然后从那里去?这就是我所期待的情况......我不确定如何判断每个元素的正确高度。
答案 0 :(得分:-1)
尝试将滚动视图添加到布局
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:orientation="vertical">
<FrameLayout
android:id="@+id/hb_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<FrameLayout
android:id="@+id/gn_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<FrameLayout
android:id="@+id/yt_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</ScrollView>