2012-02-06 43 views
0

我想根据android手机的屏幕大小制作Gridview动态的行数。所以我需要()在GridView中的onCreate的高度来计算行数(身高/ colums)这里是一段代码::GridView getMeauredHeight()或getHeight()给出0

public class GridActivity extends Activity 
{ 
    GridView gridView; 
    GridAdapter adapter;' 

    public void onCreate(Bundle savedInstance state) 
    { 
      setContentView(R.layout.gridview); 
      gridView = (GridView) findViewById(R.id.grid); 

      adapter = new GridAdapter(this); 
      gridView.setAdapter(adapter); 

      int gridHeight = gridView.getMeasuredHeight(); 
      Log.d("tag"," height :: " + gridHeight); 
    } 
} 

在日志猫它显示 - 高度:: 0 我不不理解,在适当膨胀之后它会给零。

这是一个错误?或者我错过了什么?

+0

你发现screan高度和宽度。 – NagarjunaReddy 2012-02-06 12:39:44

+0

屏幕高度和宽度在这里不相关。问题只围绕gridview的高度展开。 – 2012-02-06 12:48:41

回答

0

GridView会返回0 measuredheight和0 height,除非它被绘制到窗口,所以你无法获得GridVIew在该点的高度,你的问题的解决方法可能是: 通过比较总高度在绘制了n-1个视图之后占用了GridView高度的设备。

public void addNCompareHeight(View view) 
{ 
    ViewTreeObserver observer = grid.getViewTreeObserver(); 
    observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      //in here, place the code that requires you to know the dimensions. 
      //this will be called as the layout is finished, prior to displaying. 
      if(gridHeight<requiredHeight) 
      { 
       grid.addView(view); 
       addNCompareHeight(next); 
      } 
     } 
    } 
+0

我认为你的答案的最后一部分缺少 – 2012-02-06 13:12:25

+0

非常感谢...它的工作。 – 2012-02-06 13:40:12

0

我不知道如何将您的手机屏幕大小和GridView高度相关联。但是这里是查找屏幕分辨率和GridView高度的代码。

1)找到的屏幕分辨率在您的onCreate()做到这一点,

DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    int screen_width = dm.widthPixels; 
    int screen_height = dm.heightPixels; 

2)要找到GridView的高度,你可以用下面的方法,

@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
    // TODO Auto-generated method stub 
    super.onWindowFocusChanged(hasFocus); 
    System.out.println("...111Height..."+gridview.getMeasuredWidth()); 
} 
+0

感谢您的回复..我也会试试这个.. – 2012-02-06 13:40:53

+0

@AndroSelva是'gridview.getMeasuredWidth()'像素? – 2013-09-23 03:03:42

相关问题