我有一个扩展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中添加固定标头的解决方案是什么?
答案 0 :(得分:5)
ListView
' headerView
滚动ListView
的其他元素。如果您想要修复headerView,并在其下方滚动ListView的元素,则必须更改在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是你的标题
答案 1 :(得分:0)
显然它会随列表一起滚动。
而不是这样做,而是在ListView的顶部设置一个View,并将标题视图的内容添加到它。
通过做这样,页眉视图将始终保持静态,但列表将是可滚动的。
如果您只想将它与列表片段一起使用,则:
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>
<?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">