2014-02-12 66 views
0

我想在我的應用程序中獲取GridView項目大小。我只知道我能得到的商品尺寸回調:android如何獲得gridview項目大小

private class GridViewItemSelectedListener implements OnItemSelectedListener { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, 
       long id) { 
      // TODO Auto-generated method stub 
      int viewh = view.getHeight(); 
      int vieww = view.getWidth(); 
      Log.d(TAG, view.getWidth() + "," + view.getHeight() + 
        " > position:(" +view.getX() + " , " + view.getY() + ")"); 
     } 
    } 

,但我不能得到的onResume的項目大小,即使我嘗試在處理程序:

private Handler mHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     super.handleMessage(msg); 
     switch(msg.what) { 
     case UPDATE_GRIDVIEW: 
      View itemView = mGridView.getChildAt(0); //this will return null pointer; 
      final FrameLayout.LayoutParams lp= new FrameLayout.LayoutParams(itemView.getLayoutParams()); 
      lp.setMargins(-3, 0, 0, 0); 
      selectorView.setLayoutParams(lp); 
      break; 
     default: 
      break; 
     } 
    } 
}; 

我引發的onResume處理程序方法

@Override 
protected void onResume() { 
    Message msg = new Message(); 
    msg.what = UPDATE_GRIDVIEW; 
    mHandler.sendMessage(msg); 

    super.onResume(); 
} 

我甚至試圖調用GridView的方法getSelectedItem()等......,無法做到這一點。你能否給我一些建議,原因是什麼?以及如何獲取gridview項目大小?

回答

0
<GridView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:stretchMode="columnWidth" /> 

所以我們只需要拉伸行。我們可以通過計算GridHeight和rowsCount的高度來計算應該是多少rowHeight。

public class YourAdapter extends BaseAdapter { 

    int rowsCount; 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View itemView = convertView; 
     if (itemView == null) { 
      itemView = layoutInflater.inflate(R.layout.item_view, parent, false);    
      int height = parent.getHeight(); 
      if (height > 0) { 
       LayoutParams layoutParams = itemView.getLayoutParams(); 
       layoutParams.height = (int) (height/rowsCount); 
      } // for the 1st item parent.getHeight() is not calculated yet  
     } 
    } 
+0

我打算在Activity中獲取大小;獲取大小後,我將根據GridView項目大小重置我的selectorView。謝謝 – gladman