2014-01-08 81 views
0

所以我想要製作一個與我的屏幕一樣寬的按鈕。我希望它可以在任何設備屏幕尺寸上工作,因此在像素值中輸入不是一種選擇。我從這段代碼中得到我的整數。具體說什麼.setWidth或.setHeight使用什麼樣的Integer?

String widthString = String.valueOf(getWindowManager().getDefaultDisplay().getWidth()); 
    double widthDouble = Double.parseDouble(widthString); 
    double result = widthDouble/2;  
    String resultString = String.valueOf(result); 
    int myNum = Integer.parseInt(resultString); 

然後,當我運行Integer到像這樣的按鈕。

Button myButton = new Button(this); 
    myButton.setWidth(myNum); 

我得到一個錯誤,當我嘗試運行它...任何想法如何使其工作。我願意接受任何其他您可能會建議的方法。

感謝

+1

什麼錯誤?有成千上萬的錯誤,只是說你得到一個錯誤是完全沒有幫助的。 – 2014-01-08 00:46:03

回答

2

你最有可能得到一個NumberFormatException自2個結果在.5結尾的數除以一個整數的點會導致parseInt()失敗,整數沒有時間。

可能只是catch異常,但我建議你只投所產生的doubleint,因爲getWidth()反正返回一個整數,所以你不能去出界。我也沒有看到字符串廢話的重點,除非你在TextView或類似的東西中顯示這些數字。

int myNum = (int) (getWindowManager().getDefaultDisplay().getWidth()/2); 

即相當於

double widthDouble = getWindowManager().getDefaultDisplay().getWidth()/2; 
int myNum = (int) widthDouble; 
+1

這種方法解決了我的問題。非常感謝... – TysonU

+0

不客氣:-) –

0

這是通過一個NumberFormatException異常,因爲你得到一個非整數的結果,當你除以2,並轉換成字符串引起的。

Integer.parseInt("1.5") 

這引發NumberFormatException。

Oracle documentation

將字符串參數作爲有符號的十進制整數。字符串中的字符必須全部爲十進制數字,但第一個字符可能是ASCII減號' - '('\ u002D')以指示負值或ASCII加號'+'('\ u002B')。表示一個正值。返回結果整數值,就像參數和基數10作爲parseInt(java.lang.String,int)方法的參數一樣。

拋出: NumberFormatException - 如果字符串不包含可分析的整數。

非整數字符串將在此引發NumberFormatException。

從你的getWidth()調用中簡單的強制轉換將寬度存儲爲int應該可以工作。

1

您可以嘗試使用佈局權重,這樣的事情:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:baselineAligned="false" 
    android:orientation="horizontal" > 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="48dp" 
     android:layout_weight="1" /> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="48dp" 
     android:layout_weight="2"> 

     <Button 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:text="My Button" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="48dp" 
     android:layout_weight="1" /> 
</LinearLayout> 
相關問題