目前我有一个扩展ListActivity类的类。我需要能够在列表上方添加一些始终可见的静态按钮。我尝试使用getListView()从类中获取ListView。然后我使用addHeaderView(View)在屏幕顶部添加一个小布局。
Header.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:id="@+id/testButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Income"
android:textSize="15dip"
android:layout_weight="1" />
</LinearLayout>
在设置适配器之前,我会:
ListView lv = getListView();
lv.addHeaderView(findViewById(R.layout.header));
这将导致ListView除了从我的数据库填充之外没有任何变化。它上面没有显示任何按钮。
我尝试的另一种方法是在ListView的顶部添加填充。当我这样做时,它成功地向下移动,但是,如果我在它上面添加任何填充,它就会将ListView推到上面。无论我做什么,当我使用ListActivity时,似乎都无法在ListView上面放置几个按钮。
synic,我之前尝试过你的建议。我再次尝试只是为了理智,按钮没有显示。下面是活动的布局文件和我在oncreate()中实现的代码。
//我的列表活动,我正尝试向其中添加标题
public class AuditActivity extends ListActivity {
Budget budget;
@Override
public void onCreate(Bundle savedInstanceState) {
Cursor test;
super.onCreate(savedInstanceState);
setContentView(R.layout.audit);
ListView lv = getListView();
LayoutInflater infalter = getLayoutInflater();
ViewGroup header = (ViewGroup) infalter.inflate(R.layout.header, lv, false);
lv.addHeaderView(header);
budget = new Budget(this);
/*
try {
test = budget.getTransactions();
showEvents(test);
} finally {
}
*/
// switchTabSpecial();
}
活动的Layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<ListView android:id="@android:id/list" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:id="@android:id/empty" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/empty" />
</LinearLayout>
5条答案
按热度按时间6ioyuze21#
findViewById()
只用于查找对象View的子视图。它不用于布局id。你必须使用layout inflater将xml文件转换成它对应的视图组件。
我不知道为什么您的代码不只是抛出一个错误。
findViewById()
可能只是返回null
,因此没有向您的列表添加头。cig3rfwq2#
以下是最简单的解决方案:
或
您可以添加另一个水平线性布局来代替按钮
pengsaosao3#
经过一番研究之后,我发现在我的ListActivity XML文档中混合TableLayout和LinearLayout可以给文档添加一个标题。如果有人有兴趣看的话,下面是我的XML文档。虽然synic的方法可能是正确的方法,但在使用了他的解决方案一段时间后,我无法让它按照我想要的方式运行。
AuditTab.java
audittab.xml
AuditItem.xml
j0pj023g4#
上面的ListView答案很有用,但是它会随着列表滚动,并且不会将标题图形保持在顶部。我找到的最佳解决方案是为活动设置一个自定义标题。下面是我的构造函数的外观:
其中,your_listview_layout.xml配置了一个ListView,your_header.xml包含了您喜欢的任何自定义标题布局。请注意,必须严格按照该顺序调用以上三行,以免导致运行时问题。
帮助我的教程是http://www.londatiga.net/it/how-to-create-custom-window-title-in-android/,你可以通过搜索术语“setFeatureInt”找到堆栈溢出上的许多相关页面
inn6fuwd5#
添加静态头很容易,只需要创建一个alignParentTop(或bottom、right或left)属性设置为true的独立相对视图。