2013-07-24 30 views
0

我使用這段代碼垂直居中選擇的ListView項目;如何在不使用OnItemClickListener的情況下獲取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()方法(不執行任何操作,拋出也不例外)

所以,我該怎麼辦?

注:物品高度相等。

+0

試試這個:查看的listItem = listAdapter.getView(項目編號,空,ListView控件); listItem.measure(0,0); int list_child_item_height = listItem.getMeasuredHeight()+ listView.getDividerHeight(); – zt9788

+0

'這沒有問題。'那麼問題是什麼? – njzk2

+0

@ zt9788這工作,但如何獲得ListView的高度?我嘗試了'ListView.measure(0,0);'然後'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控件{{滾動條}}? – zt9788

+0

ListView已經可以滾動,我不必在裏面放一個ScrollView。無論如何,@ njzk2的答案是有效的。我使用相同的代碼,但只是在分配給我的ListView onWindowFocusChanged監聽器。 –

相關問題