JHH*_*JHH 15 android android-appcompat android-layout android-viewpager android-coordinatorlayout
在我在Android 5.1.1上运行的Android应用程序中,我有一个使用Toolbar带有a 的布局TabLayout,而下面是一个ViewPager.所有这些都放在一起CoordinatorLayout.
在第一页ViewPager是RecyclerView服务CardView项目.
我的问题是我ViewPager不断调整大小,以便CardView裁剪我的列表项.
我的主要布局看起来基本上像这样:
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent" >
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
我ViewPager看来的第一个片段看起来像:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v7.widget.RecyclerView
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="8dp"/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
这会呈现如下内容:
当我点击布局中的按钮时,我会startActivityForResult用来调用另一个活动,当我回到我的活动时,有时突然我的列表被裁剪,这样第一个项目中只有一半是可见的:
在水平滑动到另一个寻呼机ViewPager然后返回后,问题就消失了,所以看起来似乎没有正确触发重新布局.按HOME然后恢复我的活动并不能解决问题.请注意,即使我没有以任何方式修改我的布局,也会发生这种情况,我只是从startActivityForResult调用返回.是的,它有时只会发生......而且我没有运行后台线程可以解释明显的随机行为.
起初我以为它RecyclerView已经缩小了,但是使用HierarchyViewer我能够发现它实际上ViewPager已经缩小到原始高度的一半左右.
我尝试了各种各样的黑客来解决这个问题,包括调用invalidate()和requestLayout()我的整个视图hiearchy,但似乎没有任何帮助(虽然刷到另一页并再次修复它).而且,那些不是我想要求解的那种解决方案......然后我尝试将我的ViewPager高度改为wrap_content,这实际上解决了这个特殊问题; 返回我的活动后,我的第一个项目RecyclerView永远不会被裁剪,我可以向下滚动到其他项目.但是,现在我的列表中的最后一项始终被裁剪,如此截图中可以看到列表一直滚动到底部:
由于我现在处于一个我不太了解发生了什么的地方,我需要一些帮助.我应该将什么用作我的ViewPager的layout_height,以及 - 首先 - 为什么?对我来说,match_parent有道理,但我该怎么想在这里?我的观点在使用时是否有合理的理由被裁剪match_parent,或者我实际上遇到了一个错误ViewPager,RecyclerView和/或CoordinatorLayout?如何确保我ViewPager始终填充AppBar下方的整个屏幕区域,并且我RecyclerView可以垂直滚动以正确呈现所有CardView列表项?
我在使用旧版本的支持库时遇到了类似的问题。
请参阅这些相关问题:
https://code.google.com/p/android/issues/detail?id=176406 https://code.google.com/p/android/issues/detail?id=176187
确保您使用的是Support library截至撰写本文时的最新版本 23.1。
| 归档时间: |
|
| 查看次数: |
2100 次 |
| 最近记录: |