android在OnCreate中獲取控件的寬度和高度

一個demo,在xml佈局中,某一行的高度為其他行的一半。之前用layout_weight,得出的效果也不太理想。

 

  
   
    
    
        
    

 

 

盡管有效果瞭,但是如果裡面的內容過多的話,這個佈局就不起作用瞭。所以我們根據手機屏幕的大小 動態的設置它的高度。

 


public class HomeActivity extends Activity{ private LinearLayout homelayout; //父 private LinearLayout home1; private LinearLayout home2; private LinearLayout home3; private LinearLayout home4; boolean hasMeasured = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); home1 = (LinearLayout)findViewById(R.id.home_content_section1); home2 = (LinearLayout)findViewById(R.id.home_content_section2); home3 = (LinearLayout)findViewById(R.id.home_content_section3); home4 = (LinearLayout)findViewById(R.id.home_content_section4); homelayout = (LinearLayout)findViewById(R.id.home_content); ViewTreeObserver vto = homelayout.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { if (hasMeasured == false) { //獲取homelayout的寬度和高度 int height = homelayout.getMeasuredHeight(); //int width = homelayout.getMeasuredWidth(); android.view.ViewGroup.LayoutParams lp1 =home1.getLayoutParams(); lp1.height=height*2/7; android.view.ViewGroup.LayoutParams lp2 =home2.getLayoutParams(); lp2.height=height*2/7; android.view.ViewGroup.LayoutParams lp3 =home3.getLayoutParams(); lp3.height=height*1/7; android.view.ViewGroup.LayoutParams lp4 =home4.getLayoutParams(); lp4.height=height*2/7; hasMeasured = true; } return true; } }); }

You May Also Like