2012-09-06 53 views
0

Ofcourse我知道它返回0度量,直到它被繪製到窗口。但我需要獲得佈局的高度,因此應該調整子視圖。下面是我的代碼片段。在這個類中,我使用適配器類生成36個edittext。所以我需要根據屏幕獲得佈局的高度來調整edittexts。屏幕高度對我的應用沒有幫助。任何代碼片段將不勝感激。提前致謝。如何在onCreate方法中獲取佈局的高度或從中取出佈局的高度,以便再次設置子集?

public class GameView extends Activity implements OnClickListener { 

    FrameLayout frameLayout1; 

    GridView gridView; 

    EditText et[][]=new EditText[6][6]; 

    TextAdapter textadapter; 


     protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 


       setContentView(R.layout.gamedisplay); 

       frameLayout1=(FrameLayout)findViewById(R.id.fLayout1); 

       int layoutHeight = frameLayout1.getMeasuredHeight();//this is I need. So according to this I make adustments to edittexts. 
       Log.d("tag"," height :: " + layoutHeight); 
       System.out.println("In gameview >>>>>>>>>>>>>>>>>>>>> "+layoutHeight); 
       gridView = (GridView) findViewById(R.id.gridview); 

       gridView.setAdapter(new TextAdapter(this)); 

       //gridView.setVerticalScrollBarEnabled(true); 

       WindowManager wm=getWindowManager(); 
       Display display=wm.getDefaultDisplay(); 
       int gridSize = display.getWidth(); 
       int colWidth = (gridSize/6); 
       gridView.setColumnWidth(colWidth); 





      // getEditTexts(); 
      // putValues(); 


      } 

回答

1

如果您在XML中有硬編碼維度,那麼您只能預先測量事物。例如,在你的XML,如果您有類似android:layout_height="20dp",那麼你可以使用類似:

Resources r = getResources(); 
float layoutHeight = TypedValue.applyDimension(
      TypedValue.COMPLEX_UNIT_DIP, 20, r.getDisplayMetrics()); 

如果您使用WRAP_CONTENT或match_parent,然後通過定義那些東西是相對於事情的佈局方式計算在屏幕上放置這些尺寸之前,他們最好是模糊的。

+0

感謝您的回覆。但是當我們已經知道它們時,在程序中使用硬編碼維度有什麼用處。它不適用於應用程序。 – Spike

+0

好吧,這樣做的好處是你可以爲「平均」屏幕的利益正確地佈置它,但是如果手機有一些奇怪的尺寸或者某些東西,你仍然可以在運行時調整它們......這可以讓你在最少查找運行設備上的尺寸,這就是爲什麼這需要將顯示尺寸計算到尺寸的計算中。 –

+0

根據我的經驗,這對縮放自定義視圖非常有用,同時保持縱橫比,其中視圖的寬度/高度純粹取決於可用的屏幕空間。 –

相關問題