我知道如何在JAVA中添加页眉或页脚,但我想知道是否可以直接在XML中添加。
我不想模拟它,而是真正地将其添加为页脚或页眉!
我知道如何在JAVA中添加页眉或页脚,但我想知道是否可以直接在XML中添加。
我不想模拟它,而是真正地将其添加为页脚或页眉!
overScrollHeader/overScrollFooter
可以从XML属性中获取。但这些属性只接受可绘制对象。ListView
上方/下方的布局技巧,您可以扩展ListView
并在自定义的View
中实现自己的页脚和页眉支持。这并不难,因为页脚和页眉已经被实现了。您只需要在自定义视图的构造函数中添加XML属性解析即可。我只是想达到同样的目的(保持代码更干净,使用XML进行标记和源代码进行逻辑),但我找到的唯一解决方案是在布局中的某个地方使用XML定义标题视图,然后将其分离并作为标题放入ListView中。
例如,有这个XML:
<ListView android:id="@+id/myListView">
</ListView>
<LinearLayout android:id="@+id/myHeader">
....
</LinearLayout>
ListView myListView = (ListView) findViewById(R.id.myListView);
LinearLayout myHeader = (LinearLayout) findViewById(R.id.myHeader);
// Let's remove the myHeader view from it's current child...
((ViewGroup) myHeader.getParent()).removeView(myHeader);
// ... and put it inside ListView.
myListView.addFooterView(myHeader);
这是我的做法,在我的适配器类中继承了BaseAdapter。我针对的是API 23:
@Override
public View getView(int position, View view, ViewGroup parent) {
if (position == 0) {
if (view == null) {
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
view = layoutInflater.inflate(R.layout.test_results_header, parent, false);
}
} else {
if (view == null) {
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
view = layoutInflater.inflate(R.layout.test_result_item, parent, false);
}
}
我创建了一个与适配器行的xml相同的xml
资源(因此标题适合),并在添加适配器后将其添加到listview
中:
listView.setAdapter(myRowsAdapter);
listView.addHeaderView(View.inflate(getContext(), R.layout.title_row, null));