2

ListFragment を拡張するクラスがあります。固定ヘッダーを追加したい。

私はこの方法を試しました:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    View mHeaderView = getActivity().getLayoutInflater().inflate(R.layout.remedy_header_view, null);            
    getListView().addHeaderView(mHeaderView);
    if (mAdapter == null) {
        int layout = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? android.R.layout.simple_list_item_activated_1: android.R.layout.simple_list_item_1;
        mAdapter = new SimpleCursorAdapter(getActivity(), layout, null, new String[] { ClinicalTip.Remedies.COLUMN_NAME_REMEDY_NAME }, new int[] { android.R.id.text1 }, 0);
    }
    setListAdapter(mAdapter);
    setListShown(false);
    Activity().getSupportLoaderManager().initLoader(0, null, this);
}

@Override
public void onDestroyView() {
    // TODO Auto-generated method stub
    super.onDestroyView();
    setListAdapter(null);
}

しかし、この方法を使用すると、ヘッダーは固定されず、スクロールされます。ListFragment に固定ヘッダーを追加するための解決策は何ですか?

4

2 に答える 2

5

は、の他ListViewheaderView要素とともにスクロールしListViewます。ListView の要素が下にスクロールするように headerView を修正したい場合は、内部で返された Layout を変更する必要がありますonCreateView。例えば:

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

<TextView
    android:id="@+id/header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="myHeader" />

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />


 </LinearLayout>

例えば:

 View detailListHeader ;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) {
     super.onCreateView(inflater, container,
        savedInstanceState);
    View view = inflater.inflate(R.layout.myxml, container, false);
     detailListHeader = view.findViewById(R.id.header);
     return view;
}

detailListHeader はヘッダーです

于 2013-06-22T08:30:22.113 に答える
0

明らかに、リストとともにスクロールされます。
これを行う代わりに、ListView の上に View を設定し、ヘッダー ビューのコンテンツを追加します。

これにより、ヘッダー ビューは常に静的なままですが、リストはスクロール可能になります。

また、List Fragment でのみ使用する場合:
ListFragment には、単一のリスト ビューで構成される既定のレイアウトがあります。ただし、必要に応じて、onCreateView(LayoutInflater, ViewGroup, Bundle) から独自のビュー階層を返すことで、フラグメント レイアウトをカスタマイズできます。これを行うには、ビュー階層に ID "@android:id/list" (コードの場合はリスト) を持つ ListView オブジェクトが含まれている必要があります。

したがって、レイアウトファイルは次のようになります。

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

 `<TextView android:id="@id/header"
           android:layout_width="match_parent"
           android:layout_height="match_parent" />`

 `<ListView android:id="@id/android:list"
           android:layout_width="match_parent"
           android:layout_height="match_parent" />`

</LinearLayout>

于 2013-06-22T08:29:49.360 に答える