我想根据Android手机的屏幕尺寸在Gridview动态中创建行数。所以我需要onCreate()中的Gridview的高度来计算行数。(高度/ colums)这里是一个代码片段::
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);
}
}
在log cat中显示 - height :: 0 我不明白,在适当膨胀后它给出零。
这是一个错误吗?或者我错过了什么?
答案 0 :(得分:0)
除非将窗口绘制到窗口,否则GridView将返回0个高度和0高度,因此您无法获得GridVIew的高度,问题的解决方法可能是: 通过比较设备的总高度和在将n-1个视图绘制到屏幕后占用的GridView的高度,将第N个视图添加到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);
}
}
}
答案 1 :(得分: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());
}