2011-07-25 92 views
0

其實我已經創建了一個按鈕陣列,現在我的問題是它是否適合所有的屏幕分辨率或沒有..因爲我使用nexus的設備和在這裏它的工作正常..我的意思是說所有的按鈕排列在完美的順序..更多有史以來,當我把背景圖像的每個按鈕的工作罰款..現在我懷疑它是否適用於更便宜的設備由我寫的相同的代碼或我必須做額外的東西that.thats意味着它是否適合所有的屏幕resolution..or我寫not..the代碼..屏幕分辨率

  LinearLayout layoutVertical = (LinearLayout) findViewById(R.id.liVLayout); 
      LinearLayout rowLayout=null; 

      LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT,1); 

      //Create Button 
      for (i = 0; i<6; i++){ 
       rowLayout = new LinearLayout(this); 
       rowLayout.setWeightSum(7); 
       layoutVertical.addView(rowLayout,param); 

       for(j=0;j<7;j++){ 
        pBtnDay[i][j]=new Button(this); 

        rowLayout.addView(pBtnDay[i][j],param); 

        pBtnDay[i][j].setOnLongClickListener(this);       
        pBtnDay[i][j].setOnClickListener(this); 



       } 
      } 
      return true; 

一兩件事,當我試圖找到寬度和高度也返回0按鈕。 。爲什麼?

回答

1

如果您確切知道您希望在多個設備上在屏幕上顯示多少元素,使用weightSum是最佳解決方案。所以如果它顯示出來,說一個HTC野火(LDPI),那麼它也會顯示在你的Nexus(HDPI)上。至於你的第二個問題,我假設你正在使用View.getHeight()和View.getWidth()來獲得這些值。由於你的按鈕還沒有被繪製,Android沒有爲它們指定尺寸值,這就是它們爲0的原因。如果你需要onCreate中這些按鈕的寬度和高度,那麼你需要做一些數學運算你自己:)

1

Adnroid應用程序的基本原理之一是具有不同屏幕分辨率,像素深度和Oreintation的平臺之間的可移植性。

如何實現這一點,已在this鏈接中得到很好的解釋。請享用!

如果您有興趣獲得屏幕參數,那麼您可以使用DisplayMetrics和Window Manager。 Shash

1

對於第二個答案:如果你需要的按鈕尺寸值,使用:

@Override 
    public void onWindowFocusChanged(boolean hasFocus) 
    { 
     if (hasFocus) 
     { 
// calculates dimesions 
     } 
    } 

事實上,正如前說,在OnCreate你還沒有計算它們。

+0

這是正確的,當onWindowsFocusChanged觸發Android已經爲您的視圖繪製尺寸。 –