2011-08-22 63 views
0

中測量視圖的寬度我在具有水平方向的線性佈局中有兩個文本視圖。文本視圖的寬度是wrap_content。如果兩個文本視圖的寬度總和小於屏幕寬度,那就好了。如果寬度的總和超過了屏幕寬度,那麼我需要將方向從水平改爲垂直。我可以嘗試使用onSizeChanged()函數創建自定義視圖,但我使用兩個文本視圖,所以我不確定當onSizeChanged()在一個文本視圖不會確保其他textview完全繪製以獲取寬度。任何建議對我都很有幫助。如何在android

<LinearLayout android:id="@+id/status_container" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:orientation="horizontal"> 
    <TextView android:id="@+id/view1" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content"/> 
    <TextView android:id="@+id/view2" 
        android:layout_height="wrap_content" 
     android:layout_width="wrap_content"/> 
</LinearLayout> 

// In OnCreate() function 
TextView view1 = (TextView) findViewById(R.id.view1); 
TextView view2 = (TextView) findViewById(R.id.view2); 
view1.setText("Good Morning,"); 
view2.setText("I am Ron"); 
int view1_width = view1.getWidth(); 
int view2_width = view2.getWidth(); 
if ((view1_width + view2_width) > screen_width) { 
    // Change the Linear Layout orientation to Vertical 
} 

這裏view1_width和view2_width正在返回0。我要檢查,如果view1_width + view2_width大於屏幕寬度大於我需要改變方向爲垂直,否則水平方向是好的。

-Ron

+0

的目標是什麼? weight =「1」,兩者都會得到兩個元素,每個屏幕只有一半的屏幕 – njzk2

+0

您可以發佈onCreate()中的代碼嗎? –

+0

由於GUI尚不存在,因此無法在onCreate()中使用getWidth()。嘗試在onStart() – Pikaling

回答

1

添加到您的活動的onCreate

ViewTreeObserver vto = layout.getViewTreeObserver(); 
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
     @Override 
      public void onGlobalLayout() { 
       //You should be able to get the width and height over here. 

       layout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
      } 
    });