我有顶部的viewpager和另一个vew(本例中的按钮)底部的线性布局。寻呼机中的视图具有不同的高度。我希望寻呼机在所有页面上都有wrap_content
高度,按钮视图可以填充屏幕的其余部分。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="New Button"
android:id="@+id/button3"
android:layout_weight="1"/>
</LinearLayout>
这不起作用。如果我将layout_weight=1
同时提供给寻呼机和按钮,则无论内容高度如何,它们都会共享屏幕50:50。我试图在requestLayout()
中致电ViewPager.OnPageChangeListener.onPageSelected()
,但它没有帮助。还尝试了this
答案 0 :(得分:0)
您是否尝试为寻呼机设置layout_weight = 1,为按钮设置layout_weight = 2?
答案 1 :(得分:0)
这适合我,但我认为不完美。
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
View titlestrip = getChildAt(0);
int h = titlestrip.getMeasuredHeight();
View fv = ((FragmentPagerAdapter)getAdapter()).getItem(getCurrentItem()).getView();
if (fv != null) {
fv.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
h += fv.getMeasuredHeight();
}
super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(h, MeasureSpec.EXACTLY));
}
它依赖于我的FragmentPagerAdapter.getItem()
没有实例化新片段但从容器返回它的事实。