我正在使用customadapter并覆盖getView()方法。在这个方法中,我调用view.getHeight()返回0.我想找出listview中每个项目的高度(以像素为单位)。并找出它在屏幕上的位置。所以,如果我在列表视图中有10个项目,则可以找到屏幕上第5个项目位置(以像素为单位),我想找出项目的y。左上角。
CustomArrayAdapter adapter = new CustomArrayAdapter(this,R.layout.rowlayout,mydizi);
View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
lv.addHeaderView(header);
lv.setAdapter(adapter);
View viewList = lv.getChildAt(5 - lv.getFirstVisiblePosition());
viewList.getLocationOnScreen(location);
答案 0 :(得分:0)
您可能需要使用ViewTreeObserver之类的东西。请参阅this问题的回复。您可以在onCreate方法中放置与此类似的块。如果视图返回的值为0,则很可能是您在活动生命周期中过早地调用了view方法(即在屏幕对象被映射出来并且能够被测量之前)。
答案 1 :(得分:0)
对于列表mList中的给定VISIBLE行nPosition,您可以通过以下方式获取视图的位置:
// find the position of the source and destination accounts ListView rows
int[] location = {0,0};
View viewList = mList.getChildAt(nPosition - mList.getFirstVisiblePosition());
viewList.getLocationOnScreen(location);
但您可能需要在getView()外部执行此操作,即填充列表后。