1

我有一個RelativeLayouts,我想把它作爲一個頭添加到ExpandableList中。基本上,佈局與我用於列表中的子視圖的佈局相同。ExpandableListView.addHeaderView()沒有保留佈局參數

這裏的佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="72dp" 
    android:paddingTop="16dp" 
    android:paddingBottom="16dp" 
    android:paddingLeft="50dp" 
    android:paddingStart="50dp" 
    android:paddingRight="16dp" 
    android:paddingEnd="16dp"> 

    <TextView 
     android:id="@+id/category_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Electricity" 
     android:textAppearance="@style/TextAppearance.AppCompat.Subhead"/> 

    <TextView 
     android:id="@+id/current_balance" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:text="Rp 300.000" 
     android:textAppearance="@style/TextAppearance.AppCompat.Subhead"/> 

    <TextView 
     android:id="@+id/current_budget" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:text="Rp800.000" 
     android:textAppearance="@style/TextAppearance.AppCompat.Body1" 
     android:textColor="@color/secondary_text"/> 

    <TextView 
     android:id="@+id/current_expenses" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentBottom="true" 
     android:text="Rp800.000" 
     android:textAppearance="@style/TextAppearance.AppCompat.Body1" 
     android:textColor="@color/secondary_text"/> 

</RelativeLayout> 

然後我裏面添加onCreateView標題如下:

View view = inflater.inflate(R.layout.fragment_budget_list, container, false); 

View listHeader = inflater.inflate(R.layout.row_budget_item, null); 
// populate views in the header 

ExpandableListView listView = (ExpandableListView) view.findViewById(R.id.list_budget); 
listView.addHeaderView(listHeader); 
listView.setAdapter(mAdapter); 

頭被證明,不過,它看起來像的高度改爲0,因爲第一行(category_name和current_balance)中的TextViews與第二行(current_budget和current_expenses)重疊。

這是因爲佈局是轉換爲AbsListView(注爲列表的子視圖使用時的佈局是正確顯示)? 如何保留佈局參數? 我試過listHeader.setMinimumHeight(),但它不起作用

回答

1

充氣頭佈局顯然,當發現我的答案從這個post

,我需要提供ExpandableListView爲根,以falseattachToRoot。因此,佈局參數值將被提供給根視圖。因此,代碼如下所示:

View view = inflater.inflate(R.layout.fragment_budget_list, container, false); 
ExpandableListView listView = (ExpandableListView) view.findViewById(R.id.list_budget); 

View listHeader = inflater.inflate(R.layout.row_budget_item, listView, false); 

docs

:可選視圖是產生層次的父(如果attachToRoot是真實的),或者只是一個對象提供用於返回的層次結構的根目錄的 組的LayoutParams值(如果 attachToRoot是假的。)

0

我在佈局中看不到列表視圖。 如果你想在你的列表中的頭,我建議你加入這樣的:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ListView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/activity_chat_listView" 
    android:layout_above="@+id/linearLayout" 
    android:stackFromBottom="true" 
    android:paddingBottom="3dp" 
    android:transcriptMode="alwaysScroll"/> 
</RelativeLayout> 

然後在的onCreate添加mListView.setAdapter(mChatAdapter);其中private ChatAdapter mChatAdapter; 我認爲這個佈局您提供的,將通過Loader<Cursor> 現在加載多次,在ChatAdapter bindView或GetView中,只要你希望這個頭部可見或不見,就可以決定。

有許多Cursor適配器可以看到的很好的例子。 這裏檢查一個https://thinkandroid.wordpress.com/2010/01/11/custom-cursoradapters/ 這取決於您的需求。 希望它有助於