2011-07-25 266 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已经为您的视图绘制尺寸。 –