我有一个FrameLayout,通过在TabWidget上点击选项卡来加载Fragment。我无法弄清楚如何使FrameLayout的高度与其内容一样高,以便整个包含ScrollView作为一个单独的滚动视图滚动,而不是分开的滚动视图。
这是此Fragment结构的可视示例:
正如您所看到的,Frame Layout Visible Height只显示一个碎片行,实际上有几个碎片行。我现在可以在FrameLayout中滚动以查看其他行,但这不是我想要的。 FrameLayout由LinearLayout组成,其中包含一个GridView,它们的layout_height设置为wrap_content。
我尝试将FrameLayout的高度硬编码为500dp,效果很好,除了它不再具有动态大小。每次将新图像加载到内部内容中,我需要在程序中重新调整FrameLayout的大小吗?是否有布局属性可设置以将其高度拉伸到匹配其内部内容?
这是我的布局xml文件:
这是此Fragment结构的可视示例:
正如您所看到的,Frame Layout Visible Height只显示一个碎片行,实际上有几个碎片行。我现在可以在FrameLayout中滚动以查看其他行,但这不是我想要的。 FrameLayout由LinearLayout组成,其中包含一个GridView,它们的layout_height设置为wrap_content。
我尝试将FrameLayout的高度硬编码为500dp,效果很好,除了它不再具有动态大小。每次将新图像加载到内部内容中,我需要在程序中重新调整FrameLayout的大小吗?是否有布局属性可设置以将其高度拉伸到匹配其内部内容?
这是我的布局xml文件:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="200dp">
<!-- CONTAINS USER INFO AND STATS -->
</RelativeLayout>
<android.support.v4.app.FragmentTabHost
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffff">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:weightSum="2">
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
</FrameLayout>
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
</LinearLayout>
</ScrollView>
谢谢!
由于我要在这上面设置赏金,所以我想分享一下我到目前为止已经弄清楚的内容。
在缩略图中,当每个图像加载时,我会调用GridLayout
中保存图像的函数来计算图像数量并设置GridLayout
的高度。虽然这样做似乎有点低效,但它运行良好。
我所做的是设置GridLayout
的高度,然后在其父级上调用requestLayout
和invalidate
。这种方法可行,但仅限于在图片加载时切换到不同的标签页并返回到缩略图时才能正常工作。这让我认为我没有在正确的时间或对象上进行更新。
无论如何,话说回来。有人知道如何使GridLayout
的高度扩展以容纳其内容(而不是滚动),以便我可以滚动整个页面(包括顶部部分)吗?
我还应该添加GridView
布局:
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid"
android:stretchMode="columnWidth"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="false"
android:fastScrollAlwaysVisible="false"
android:fastScrollEnabled="false"
android:numColumns="3"
android:choiceMode="none">
</GridView>
GridLayout
,但是你关于内部滚动的评论和发布的 XML 显示,实际上你正在使用GridView
,它是一个独立的滚动容器。GridLayout
不会有这个问题,但另一方面它无法动态解决列宽。 - corsair992ListView
充满整个屏幕。对于GridView
来说应该是类似的,因为唯一的区别就是每行有多个项目。或者,使用实际的GridLayout
,这些不是可扩展的窗口,并在代码中填充内容。 - zapl