2013-07-24 3 views
0

Я использую этот кусок кода для вертикального центрирования выбранного элемента ListView;Как получить высоту элемента ListView без использования OnItemClickListener?

@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() метод по умолчанию выбранного элемента (не делает ничего, кидает не исключение)

Так что я могу сделать?

Примечание: Высота предмета равна.

+0

попробовать это: View ListItem = listAdapter.getView (Номер, NULL, ListView); listItem.measure (0, 0); int list_child_item_height = listItem.getMeasuredHeight() + listView.getDividerHeight(); – zt9788

+0

'Нет проблем с этим.' В чем проблема? – njzk2

+0

@ zt9788 Это работает, но как получить высоту ListView? Я попробовал 'ListView.measure (0, 0);' then 'getHeight()', но все равно возвращает 0. –

ответ

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; // 
} 
+0

Элементы в свитке, поэтому (количество элементов * высота элемента)! = (Высота списка). –

+0

@m_poorUser Я не могу себе представить, что это такое? ListView {Scroll {пункт}}? – zt9788

+0

ListView уже прокручивается, мне не нужно вставлять ScrollView внутри него. Во всяком случае, ответ @ njzk2 работает. Я использовал тот же код, но только внутри слушателя onWindowFocusChanged, назначенного для моего ListView. –

Смежные вопросы