在设置android:height="wrap_content"
时,我遇到了有关ViewPager的高度设置不正确的问题
现在,我已经成功应用了here中提到的修复程序,它已按预期工作。我的ViewPager正确假定其最高元素的高度。
但是!我的viewpager内部的每个项目都包含一个线性布局,其中包含2个元素,如下所示:(这是我的容器)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:layout_margin="@dimen/gutterSpaceHalf"
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<LinearLayout
android:id="@+id/foo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:layout_gravity="bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
这实际上使我的布局看起来像这样:
在这里我要说明的是,在第二页上,LinearLayout foo
的高度将与第一页不同。这是预期的。
但是当我想将每页上的按钮对齐到底部时,问题就来了!这当然是一个问题,因为第一页foo
的底部与第二页foo
的底部不同。
在我看来,标准解决方案是将foo
的高度设置为match_parent。但是,如果执行此操作,整个页面将成为我的imageview的高度,因为上述应用的修复程序无法再正确计算每个孩子的身高。
因此,请记住我的整个目标是拥有等高的页面,并带有动态内容(文本),同时使按钮与页面底部对齐,您在这里提出什么解决方案?
我尝试过的事情包括在树的布局上晃动高度设置,以及在将每个视图的高度添加到ViewPagerAdapter中后将其设置为其容器的测量高度,但是我似乎并没有用
任何建议将不胜感激。如果我错过了什么,或者您想了解更多信息,请发表评论。
答案 0 :(得分:1)
有五个是
我要做的就是在按钮上方添加weight=1
的视图,并为按钮设置一个静态高度。现在,由于添加的视图扩展为填充剩余的大小,因此按钮在每个页面上正确地排列在底部。
我还必须在上面提到的“ hacky”解决方案中定义的高度上加上+1,否则我添加的视图会将项目推出最大页面的布局,例如:
if (height != 0) {
heightMeasureSpec = MeasureSpec.makeMeasureSpec(height + 1 /* This is a heuristic solution */, MeasureSpec.EXACTLY);
}
YESSSSSS
(布局更改):
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<View <!-- ADDED -->
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="@dimen/buttonHeight"/>