2014-02-19 49 views
1

我無法管理如何獲得膨脹的頁面元素大小。 這裏是我的代碼如何正確獲取膨脹內容的大小並添加到ViewPager?

viewPager = (ViewPager) findViewById(R.id.home_flipper); 
    GridIconsPageContent.MyPagerAdapter pagerAdapter = new GridIconsPageContent.MyPagerAdapter(); 
    viewPager.setAdapter(pagerAdapter); 
    ... 
    --called new thread for populate data-- 
    ... 
    LayoutInflater inflater = LayoutInflater.from(parent); 
    View page = inflater.inflate(R.layout.page_banner, null); 
    pagerAdapter.addPage(page); 
    pagerAdapter.notifyDataSetChanged(); 

    page.getWidth()//retutns 0 

page_banner佈局是什麼樣的:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width = "fill_parent" 
     android:layout_height = "fill_parent"> 
    <LinearLayout 
      android:id="@+id/bannersPage" 
      android:layout_height = "fill_parent" 
      android:layout_width = "fill_parent" 
      android:orientation = "vertical"> 
</FrameLayout> 

ViewPager佈局

<android.support.v4.view.ViewPager 
android:id="@+id/home_flipper" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_weight="1" 
android:background = "@android:color/white"/> 

我不明白爲什麼page.getWidth()返回0 當我m到處尺寸的ViewPager它返回正確的值。 我是Android平臺的新手,我想我錯過了一些東西,但我無法弄清楚它是什麼。

你能幫我嗎?

問候, 維克多

回答

1
ViewTreeObserver vto = page.getViewTreeObserver(); 
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() 
{ 
    public boolean onPreDraw() 
    { 
     int width = page.getMeasuredWidth(); 

     return true; 
    } 
});