2014-10-14 5 views
13

Pracuję z ListView, który jest częścią ListFragment. Chcę dodać nagłówek o określonej/niestandardowej wysokości, ale nie ma znaczenia, co umieściłem w wysokości widoku nagłówka, zawsze ma taką samą wysokość. Czy można zmienić wysokość widoku nagłówka ListView?Wysokość widoku nagłówka w ListView

poniższy kod używam:

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); 
    } 

Odpowiedz

29

Po przejechaniu w null jako drugi parametr do inflate(), jesteś mówiąc, że nie ma rodzica powiązanego z th e widok. Ma to niefortunny skutek uboczny, gdy używany dowolny atrybut layout_ jest ignorowany, ponieważ parametry rodzica określają widok podrzędny, a nie bezpośrednio wpływają na parametry podrzędne (takie jak inne widoki): this pro-tip, aby uzyskać więcej szczegółów na temat atrybutów layout_.

Możesz użyć numeru inflate(R.layout.header, getListView(), false), aby przekazać ListView, który ostatecznie będzie nadrzędny w widoku nagłówka (zauważ, że false mówi, aby nie dodawać widoku bezpośrednio - ListView zrobi to automatycznie dla ciebie).

+1

Cześć @ianhanniballake, twoje rozwiązanie działa jak urok: D, dziękuję bardzo! Kiedy użyłem _inflate (R.layout.header, getListView(), false) _ zaczęło działać. – Androider

+2

to jest * naprawdę * świetna odpowiedź, to właśnie dostajesz, czytając dokumenty, ludzie! Wstydź się nam – Odaym