1. 程式人生 > >Android getheight() 得到返回值為0

Android getheight() 得到返回值為0

對某一layout 應用getheight() 得到的一直是0. 查詢後發現,這個方法直接用在 onCreat 函式裡得到的就是0. 所以getheight 或者用到onCreat 之後的方法中,或者模擬button click 得到也可以。

我採用的是比較麻煩的方法,oncreate 新建一個執行緒,執行緒執行完後,已經跳出onCreate 這是去呼叫getheight 方法

 @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        frameLayout=(FrameLayout)findViewById(R.id.frame);

        /* 開啟一個新執行緒,在新執行緒裡執行耗時的方法 */  
        new Thread(new Runnable() {  
            @Override  
            public void run() {  
                try {
					spandTimeMethod();
				//	handler.sendEmptyMessage(0);// 執行耗時的方法之後傳送消給handler  
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}// 耗時的方法  
                handler.sendEmptyMessage(0);// 執行耗時的方法之後傳送消給handler  
            }  

        }).start(); 
		

Handler handler = new Handler() {  
        @Override  
        public void handleMessage(Message msg) {// handler接收到訊息後就會執行此方法  
            initViews();
        }  
    };  

private void initViews() {
        //呼叫getheight 方法,得到控制元件高度
    	MyApp.parentheight=frameLayout.getHeight();
}