0

我使用这段代码将 ListView 的选定项垂直居中;

@Override
public void onItemClick(AdapterView<?> adapter, View v, int position, long id) {
    m_listView.smoothScrollToPositionFromTop(position, (m_listView.getHeight() - v.getHeight()) / 2, 100);
}

这没有问题。问题是我无法将默认选定项目居中,因为我既无法获得 ListView 高度也无法获得项目高度。

我尝试了什么;

  • Inflater使用(返回 0 作为高度)创建视图
  • 在默认选定项上运行performClick()方法(什么都不做,不抛出异常)

那么我能做什么呢?

注意:物品高度相等。

4

1 回答 1

1

拿这个代码:

//
int totalHeight = 0;//it is the ListView Height
for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
    View listItem = listAdapter.getView(i, null, listView);
    listItem.measure(0, 0);
    int list_child_item_height = listItem.getMeasuredHeight()+listView.getDividerHeight();//item height
    totalHeight += list_child_item_height; //
}
于 2013-07-24T09:10:11.440 回答