2011-09-27 46 views
1

我想在運行時設置按鈕寬度,我希望它等於顯示寬度的50%。 我用下面的,但我有一個問題,「沒有出現在模擬器」,並說 「進程意外停止,請重試」 的.java 公共類實驗擴展活動{如何在運行時設置按鈕的寬度?

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     Display display = getWindowManager().getDefaultDisplay(); 
     int width = display.getWidth(); 
     int height = display.getHeight(); 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     Button btn = (Button) findViewById(R.id.btnmarwa); 
     btn.setWidth(width/2);  
     setContentView(R.layout.emailpopup); 
    } 
} 

當我評論這行 btn.setWidth(width);
沒有錯誤,佈局出現,那麼在.java文件中將新寬度設置爲按鈕的位置?

回答

3

是不是直接關於你的問題,但你必須把這行後setContentView()'導致findViewById方法。

喜歡試試這個:

// TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.emailpopup); 
    Button btn = (Button) findViewById(R.id.btnmarwa); 
    btn.setWidth(width/2);  
+0

感謝它的工作原理:) – Sonnenschein

1

您應該說明日誌中的例外情況,以便我們確定它爲什麼會崩潰。

我的猜測是btn爲null,因爲findViewById返回null,所以btn.setWidth()導致NullPointerException。

這可能是因爲您在findViewById後設置了setContentView,所以視圖還沒有被充氣。

更改順序,確保在調用findViewById之前調用了setContentView。

+0

是的,你沒事吧:) – Sonnenschein

相關問題