【发布时间】:2015-12-08 10:20:26
【问题描述】:
我有包含两个 ViewPager 的 ScrollView。 Top pager 的高度始终为 48dp。我希望底部寻呼机的高度等于当前页面高度。所以我想我会在每个页面更改事件上以编程方式将 ViewPager 的高度更改为当前页面高度。但是,当我在当前页面视图上调用 getHeight() 时,它会返回视图可见区域的高度。相反,我想获得一个视图的高度,因为它的父级具有无限的高度,即,就像视图被放到 ScrollView 而不是在 ViewPager 中一样。可以测量吗?
XML:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/top_pager"
android:layout_width="match_parent"
android:layout_height="48dp" >
</android.support.v4.view.ViewPager>
<android.support.v4.view.ViewPager
android:id="@+id/bottom_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</android.support.v4.view.ViewPager>
</LinearLayout>
</ScrollView>
JAVA:
bottomPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
Object pageTag = bottomPager.getTag();
View currentPageView = bottomPager.findViewWithTag(pageTag);
int height = currentPageView.getHeight();
// height above is always smaller than the screen height
// no matter how much content currentPage has.
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
【问题讨论】:
-
得到这样的高度:- int height = currentPageView.getLayoutParams().height
标签: android android-viewpager android-view android-scrollview