在onCreateView中向listFragment添加静态头

Jus*_*rus 2 android android-layout

如何在listFragment中的listview中添加一个简单的静态头?我想从xml def创建标题并通过膨胀添加它.

我的onCreateView:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) {
    View detailList = inflater.inflate(R.layout.detail_fragment, container, false);
    View detailListHeader = inflater.inflate(R.layout.daily_sales_header, null, false);
    container.addView(detailListHeader, 0);
    return detailList;
}
Run Code Online (Sandbox Code Playgroud)

这会创建标题,但它不在列表视图之上,而是列表视图显示在标题下方,即标题覆盖列表视图.

有关正确实施的任何提示吗?

Car*_*Dev 8

将hackbod的描述放入代码中,因为他的答案在答案出现之前创建了更多问题.有时我只想要鱼.我并不总是需要知道网是如何制作的......

首先,创建一个如下所示的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myListViewWithHeader"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="6dp"
        android:textStyle="bold"
        android:textSize="20sp" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false" />

    <TextView
        android:id="@android:id/empty"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

然后,在onCreateView方法中执行以下操作:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.myListViewWithHeader, null);
    return view;
}
Run Code Online (Sandbox Code Playgroud)

现在可以通过执行以下操作填充标头:

// get the header view
TextView headerView = (TextView) getView().findViewById(R.id.header);
headerView.setText("Header text goes here");
Run Code Online (Sandbox Code Playgroud)

请注意,我的标题是TextView,但如果您愿意,可以将其替换为另一个视图.在这种情况下,您需要为要使用的标头内的每个视图执行getView().findViewById(R.id.xxxxx)