2014-10-14 4 views
13

Ich arbeite mit einer ListView, die Teil einer ListFragment ist. Ich möchte eine Kopfzeile mit einer bestimmten/benutzerdefinierten Höhe hinzufügen, aber es spielt keine Rolle, was ich in die Höhe der Kopfzeile stelle, immer hat es die gleiche Höhe. Ist es möglich, die Höhe der Header-Ansicht eines ListViews zu ändern?Header Ansichtshöhe in einer ListView

Unter dem Code, den ich verwenden:

header.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" /> 

ListFragment

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     TextView fakeHeader = (TextView)getActivity().getLayoutInflater().inflate(R.layout.header, null); 
     getListView().addHeaderView(fakeHeader); 
    } 

Antwort

29

Wenn Sie in null als zweiten Parameter zu inflate() passieren, sind Sie es ist kein Elternteil mit th verbunden die Aussicht. Dies hat den unglücklichen Nebeneffekt, dass ein layout_ Attribut, das Sie verwenden, ignoriert wird, da layout_ Parameter beeinflussen, wie der Elternteil die untergeordnete Ansicht ausrichtet, anstatt direkt auf das untergeordnete Element (wie andere Ansichten) zu wirken: this pro-tip godes in weitere Details auf layout_ Attribute.

Sie können inflate(R.layout.header, getListView(), false) verwenden, um die ListView übergeben, die schließlich die Eltern der Header-Ansicht (beachten Sie die falsche sagt, um die Ansicht nicht direkt hinzufügen - ListView wird dies automatisch für Sie tun).

+1

Hallo @ianhanniballake, Ihre Lösung funktioniert wie ein Zauber: D, vielen Dank! Als ich _inflate (R.layout.header, getListView(), false) _ verwendet hat, hat es begonnen zu arbeiten. – Androider

+2

Das ist eine * wirklich * großartige Antwort, die Sie bekommen, wenn Sie die Dokumentation lesen, Leute! Schande über uns – Odaym