How to get Element Höhe des ListView-ohne Verwendung von OnItemClickListener?

Ich dieses Stück code, vertikal zentrieren ausgewählten Eintrag der ListView;

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

Ist es kein problem mit diesem. Problem ist, ich kann nicht zentrieren Sie die standardmäßig ausgewählte Element, da kann ich nicht bekommen, weder ListView Höhe noch Punkt Höhe.

Was ich versucht habe;

  • Erstellen von Ansichten mit Inflater (gibt 0 zurück, da die Höhe)
  • Läuft performClick() Methode standardmäßig ausgewählte Element (die nichts tut, wirft keine exception)

Also, was kann ich tun?

Hinweis: Element-Höhen gleich sind.

  • versuchen Sie, diese:Ansicht listItem = listAdapter.getView(Artikelnummer, null, listView); listItem.Messen(0, 0); int list_child_item_height = listItem.getMeasuredHeight()+listView.getDividerHeight();
  • There is no problem with this. was ist das problem dann ?
  • Das funktioniert auch, aber wie man ListView Höhe? Ich habe versucht ListView.measure(0, 0); dann getHeight() aber immer noch 0 zurück.
  • Der code funktioniert nur, wenn ein Element angeklickt wird. Ich brauche diese nur nach der Erstellung des ListView.
  • Ich poste die Antwort
  • Sie müssen rufen, wenn Sie listview sichtbar ist. Das ist wahrscheinlich, um onAttachedToWindow in Ihrer Aktivität, oder vielleicht in onWindowFocusChanged
  • Es funktionierte, legte Ihren Kommentar als eine Antwort, so kann ich es akzeptieren.

Schreibe einen Kommentar