如何在列表视图中获取项目的高度?

时间:2012-07-26 14:11:03

标签: android listview

我正在使用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);

2 个答案:

答案 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()外部执行此操作,即填充列表后。