Derzeit habe ich eine Klasse, die die ListActivity-Klasse erweitert. Ich muss einige statische Buttons über der Liste hinzufügen können, die immer sichtbar sind. Ich habe versucht, die ListView mit getListView() innerhalb der Klasse zu greifen. Dann habe ich addHeaderView (View) verwendet, um ein kleines Layout oben auf dem Bildschirm hinzuzufügen.Android: Hinzufügen von statischen Kopfzeilen an den Anfang einer ListActivity
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>
Bevor ich den Adapter-Set ich tun:
ListView lv = getListView();
lv.addHeaderView(findViewById(R.layout.header));
Dies nichts führt zu dem Listview geschieht mit Ausnahme es aus meiner Datenbank gefüllt wird. Keine Schaltflächen erscheinen darüber.
Ein anderer Ansatz, den ich versucht habe, oben auf dem ListView Padding hinzuzufügen. Als ich das tat, ging es erfolgreich nach unten, aber wenn ich etwas darüber fügte, schob es die ListView um. Egal, was ich mache, es scheint, als ob ich nicht ein paar Knöpfe oberhalb der ListView platzieren könnte, wenn ich die ListActivity benutzte.
Vielen Dank im Voraus.
synic, habe ich Ihren Vorschlag zuvor versucht. Ich habe es nur aus Gründen der Vernunft versucht, und der Knopf wurde nicht angezeigt. Im Folgenden finden Sie die Layoutdatei für die Aktivität und den Code, den ich in oncreate() implementiert habe.
// Meine listactivity Ich versuche, den Header zu
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 für Aktivität hinzufügen:
<?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>
ich Sie zu einem Viewgroup müssen zuweisen und warf den aufgeblasenen Kopf nicht denken gibt. ViewGroup erweitert View, und die addHeaderView-Methode der ListView akzeptiert jedes View-Objekt. –
@Glenn Bech iam stimme deiner Aussage zu –
Perfekt, +1! Nur ein zusätzlicher Kommentar: Stellen Sie sicher, dass Sie den Listenadapter ** nach dem Hinzufügen der Header-Ansicht festlegen. Das Hinzufügen des Adapters vor dem Header gab mir eine Laufzeit-Ausnahme "Kann Header-Ansicht nicht zur Liste hinzufügen - setAdapter wie bereits genannt" – Addi