我需要使用屏幕大小的值,所以我正在尝试为我的gridview设置适配器
@Override
public void onLayoutChange(View view, int left, int top, int right,
int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
Log.d("LayoutTest","left="+left+", top="+top+", right="+right+", bottom="+bottom);
gridview.setAdapter(new GridImageAdapter(this,bottom));
}
这不会在我的网格视图中显示任何内容,但如果我移动此行
gridview.setAdapter(new GridImageAdapter(this,1000));
它工作的onCreate方法我不明白为什么它在onLayoutChange中不起作用
答案 0 :(得分:2)
当gridview setAdapter时,它会请求Layout来布局其子节点。当gridview布局(它的子节点)时,再次调用onLayoutChange函数。
再次跳转到gridView.setAdapter。
首先按照这个循环跳转setAdapter,但是第二次我不知道它为什么没有发生。
然而,如果它发生,那么你的代码就会变成无限循环。所以它在setAdapter和gridView setAdapter之后没有重新布局remove_All_Children_InLayout - > gridview什么都没显示。
回到你的问题,我想如果你需要屏幕大小,你应该使用getResource()。GetDisplayMetrics(dm)和dm.widthPixels或dm.heightPixels或其他方式来获取屏幕大小。不要像你使用的那样使用,因为它可能存在很多错误。
但是如果你仍然想要使用OnLayoutChange,你应该添加一个小代码,如: if(gridview.getAdapter()== null)gridView.setAdapter(new GridImageAdapter(this,bottom)); (但我不建议:))