0

我正在使用 customadapter 并覆盖 getView() 方法。在此方法中,我调用 view.getHeight() 返回 0。我想找出列表视图中每个项目的高度(以像素为单位)。并找出它在屏幕上的位置。因此,如果我在列表视图中有 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);
4

2 回答 2

0

您可能需要使用 ViewTreeObserver 之类的东西。请参阅问题的回复。您可以在 onCreate 方法中放置与此类似的块。如果视图返回值 0,则很可能是您在活动生命周期中过早调用视图方法(即在屏幕对象被映射并能够测量之前)。

于 2012-07-26T15:33:36.013 回答
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() 外部执行此操作,即在填充列表之后。

于 2012-07-26T15:54:07.307 回答